PaperMC — запуск двух лучей RayTrace под углом 45 градусов от точки, где смотрит игрок.JAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 PaperMC — запуск двух лучей RayTrace под углом 45 градусов от точки, где смотрит игрок.

Сообщение Anonymous »

Я пытаюсь, как следует из названия, запустить два луча в том направлении, куда смотрит игрок, но под углом 45 градусов вдоль оси X. В некоторых случаях мне удавалось заставить это работать, но не в других.
Я знаю, что как только мне скажут ответ, я почувствую себя идиотом, но это что мне удалось сделать на данный момент.

Код: Выделить всё

LivingEntity livingEntity = (LivingEntity) event.getPlayer();
World world = livingEntity.getWorld();

Vector lookDir = livingEntity.getEyeLocation().getDirection();
Vector leftDir = lookDir.clone();
Vector rightDir = lookDir.clone();

float hookDirectionFromEyeDirection = 45f / 100f;

if(lookDir.getX() >= 0) {
leftDir.add(new Vector(-hookDirectionFromEyeDirection, 0, 0));
rightDir.add(new Vector(hookDirectionFromEyeDirection, 0, 0));
} else if(lookDir.getX() < 0){
leftDir.add(new Vector(hookDirectionFromEyeDirection, 0, 0));
rightDir.add(new Vector(-hookDirectionFromEyeDirection, 0, 0));
}

RayTraceResult rayTraceResult = world.rayTraceBlocks(livingEntity.getEyeLocation(), leftDir, MAX_DISTANCE, FluidCollisionMode.NEVER, true);

MyPlugin.getLoggerInstance().info("LookDir: " + lookDir + " | " + leftDir);

if(rayTraceResult != null) {
livingEntity.sendMessage("You just hit a: " + rayTraceResult.getHitBlock().getType());
ArmorStand hook = world.createEntity(rayTraceResult.getHitPosition().toLocation(world), ArmorStand.class);
hook.setGravity(false);
livingEntity.getWorld().addEntity(hook);

return;
} else {
livingEntity.sendMessage("You didn't just hit a block...");
return;
}
В настоящий момент я использую подставку для брони, чтобы указать положение, в которое попадает луч, но по какой-то причине под определенными углами они переходят на другую сторону игрока.

Подробнее здесь: https://stackoverflow.com/questions/785 ... yer-is-fac
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»