Войти или зарегистрироваться

Помогите Как узнать в какую сторону смотрит игрок?

  • Автор темы Автор темы JayRoon
  • Дата начала Дата начала
Статус
Закрыто для дальнейших ответов.

JayRoon

Участник
Заблокирован
Пользователь
Баллы
31
Имя в Minecraft
Krongss_FUR
Извиняюсь за самый простой вопрос, суть такова.
К примеру игрок стоит на координатах 54 100 -230. Мне надо узнать в какую сторону смотрит игрок
там в z сторону или в x сторону и получить локацию то-есть если игрок смотрит в x сторону то получить
координаты +2 к x т.е если он стоит на 54 100 -230 и смотрит в сторону x и мне выдаст 56 100 -230 координаты. Вроде кажется ничего трудного, а не получается и не могу найти способ, я пробовал вот так:
Код:
Location twoBlocksAway = plr.getLocation().add(plr.getLocation().getDirection().multiply(2));
Но это совсем другая песня. Я понимаю что надо каким то способом получать в какую сторону смотрит игрок, получать это значение и добавлять 2. Если подскажите, буду рад.
 
Сторону света можно определить по Location#getYaw - оно тебе выдаст вращения головы относительно X по часовой. Здесь вот есть подходящий ответ, только заменить Yaw на нужный тебе тип. Для универсальности можно возвращать BlockFace(ограничиться сторонами света) - далее просто применяешь его относительные модификаторы loc.add(face.getModX() * 2, 0, face.getModZ() * 2)
 
Сторону света можно определить по Location#getYaw - оно тебе выдаст вращения головы относительно X по часовой. Здесь вот есть подходящий ответ, только заменить Yaw на нужный тебе тип. Для универсальности можно возвращать BlockFace(ограничиться сторонами света) - далее просто применяешь его относительные модификаторы loc.add(face.getModX() * 2, 0, face.getModZ() * 2)
Можно немного больше сказать о "только заменить Yaw на нужны тебе тип.", что это означает?
 
Можно немного больше сказать о "только заменить Yaw на нужны тебе тип.", что это означает?
Если глянешь по ссылке, там предлагают возвращать объект Yaw. В BukkitAPI нет такого класса, но вместо него может подойти BlockFace.
 
Если глянешь по ссылке, там предлагают возвращать объект Yaw. В BukkitAPI нет такого класса, но вместо него может подойти BlockFace.
Я извиняюсь если не понимаю, я правильно сделал?
Код:
       private static BlockFace getYaw(Player p) {
            float yaw = p.getLocation().getYaw();
            yaw = (yaw % 360 + 360) % 360; // true modulo, as javas modulo is weird for negative values
            if (yaw > 135 || yaw < -135) {
                return BlockFace.NORTH;
            } else if (yaw < -45) {
                return BlockFace.EAST;
            } else if (yaw > 45) {
                return BlockFace.WEST;
            } else {
                return BlockFace.SOUTH;
            }
        }
 
Я извиняюсь если не понимаю, я правильно сделал?
Код:
       private static BlockFace getYaw(Player p) {
            float yaw = p.getLocation().getYaw();
            yaw = (yaw % 360 + 360) % 360; // true modulo, as javas modulo is weird for negative values
            if (yaw > 135 || yaw < -135) {
                return BlockFace.NORTH;
            } else if (yaw < -45) {
                return BlockFace.EAST;
            } else if (yaw > 45) {
                return BlockFace.WEST;
            } else {
                return BlockFace.SOUTH;
            }
        }
Да. Дополню немного свой первый ответ: BlockFace#getModX и BlockFace#getModZ возвращают модификаторы от -1 до 1, которые как бы указывают направление. Соответственно: NORTH z=1 x=0; SOUTH z=-1 x=0; EAST z=0 x=1; WEST z=0 x=-1.
 
Да. Дополню немного свой первый ответ: BlockFace#getModX и BlockFace#getModZ возвращают модификаторы от -1 до 1, которые как бы указывают направление. Соответственно: NORTH z=1 x=0; SOUTH z=-1 x=0; EAST z=0 x=1; WEST z=0 x=-1.
Спасибо, изменю код и сделаю как надо, благодарочка.
 
Статус
Закрыто для дальнейших ответов.
Назад
Верх