Помогите Как понять с какой стороны находится игрок?

Bezobrazie

Активный участник
Пользователь
Баллы
46
Имя в Minecraft
MySoulIsCry
У меня есть 2 локации и относительно 1 локации мне нужно понять с какой стороны находится 2рая. Вопрос больше наверное по яве чем по самим плагинам. Но я просто не могу придумать какой нужен расчет с координатами чтобы понять с какой стороны локация.
 
А в чём, собственно, проблема? if(loc111.getX() > loc222.getX())...
С y и z так же. Если тебе надо север/юг, посмотри в игре на изменение корд при движении в нужную тебе сторону и сравнивай
 
А в чём, собственно, проблема? if(loc111.getX() > loc222.getX())...
С y и z так же. Если тебе надо север/юг, посмотри в игре на изменение корд при движении в нужную тебе сторону и сравнивай
Ну дак у нас не просто 2 точки на плоскости а 2 игрока и в зависимости куда смотрит игрок нужно обработать сторону. Что такое питч и яв я знаю но не могу логичиски домыслить как расчитать в какой стороне игрок 2.
 
Ну, зная pitch и yaw ты можешь определить прямую взгляда. Я не понимаю, что ты хочешь с этим сделать. Определить, смотрит ли игрок на какой-то блок?
 
snimok-png.59672
Ну, зная pitch и yaw ты можешь определить прямую взгляда. Я не понимаю, что ты хочешь с этим сделать. Определить, смотрит ли игрок на какой-то блок?
Я хочу чтобв была команда которая как компас определяет ближайшего игрока и стрелкой в чате показывает куда идти. Пример выше
 
Последнее редактирование:
Тебе нужно получить угол поворота(yaw) между взглядом твоего игрока и локацией игрока в радиусе. Проще всего будет воспользоваться векторами и немного математики. Здесь есть метод, как получить поворот от одной локации до другой.
329855.image0.jpg

Остается только получить разницу полученного поворота и текущего поворота, и уже по ней определить сторону, куда нужно смотреть игроку - можно просто поделить на 45(или меньше/больше, в зависимости от того, какая точность нужна; считай 360/точность, в данном случае точность равна 8) и округлить. Если число меньше 0, добавить 8; если больше 8, отнять 8. В итоге получишь число от 0 до 8. Далее через switch-case по часовой стрелке
PHP:
return switch(roundedYaw) {
    case 0, 8 -> "Вперед";
    case 1 -> "Немного Направо";
    case 2 -> "Направо";
    // и т.д.
    default -> "В БЕЗДНУ";
}
Мог что-то напутать, ибо устал за день, но остается надеяться на лучшее ;)
 
Тебе нужно получить угол поворота(yaw) между взглядом твоего игрока и локацией игрока в радиусе. Проще всего будет воспользоваться векторами и немного математики. Здесь есть метод, как получить поворот от одной локации до другой.
329855.image0.jpg

Остается только получить разницу полученного поворота и текущего поворота, и уже по ней определить сторону, куда нужно смотреть игроку - можно просто поделить на 45(или меньше/больше, в зависимости от того, какая точность нужна; считай 360/точность, в данном случае точность равна 8) и округлить. Если число меньше 0, добавить 8; если больше 8, отнять 8. В итоге получишь число от 0 до 8. Далее через switch-case по часовой стрелке
PHP:
return switch(roundedYaw) {
    case 0, 8 -> "Вперед";
    case 1 -> "Немного Направо";
    case 2 -> "Направо";
    // и т.д.
    default -> "В БЕЗДНУ";
}
Мог что-то напутать, ибо устал за день, но остается надеяться на лучшее ;)
Спасибо! В математике/геометрии я конечно вообще лох, но по твоим обьяснениям все понял.
 
Назад
Верх