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

Помогите Дальность полета стрелы

konfyciu98

Старожил
Пользователь
Баллы
123
Имя в Minecraft
konfyciu
Делаю вот так
Код:
event.getEntity().setVelocity(event.getEntity().getVelocity().multiply(3));
Но из-за такого стрела отклоняется от курса. Как можно увеличить дальность стрельбы без отклонения?
 
Увеличивать только одну характеристику.
 
Увеличивать только одну характеристику.
Ладно
Сделал вот такую штуку
Код:
          Location locBlock = player.getTargetBlock(null, 1).getLocation();
           
           if(locBlock != null) {
             
             if(locBlock.getBlockX() - player.getLocation().getBlockX() != 0) {
               if(locBlock.getBlockX() > player.getLocation().getBlockX()) {
                 event.getEntity().setVelocity(event.getEntity().getVelocity().setX(event.getEntity().getVelocity().getBlockX() + 3));
                 System.out.println("1###############" + event.getEntity().getVelocity().toString());
               }else {
                 event.getEntity().setVelocity(event.getEntity().getVelocity().setX(event.getEntity().getVelocity().getBlockX() - 3));
                 System.out.println("1###############" + event.getEntity().getVelocity().toString());
               }
             }
             if(locBlock.getBlockZ() - player.getLocation().getBlockZ() != 0) {
               if(locBlock.getBlockZ() > player.getLocation().getBlockZ()) {
                 event.getEntity().setVelocity(event.getEntity().getVelocity().setZ(event.getEntity().getVelocity().getBlockZ() + 3));
                 System.out.println("2###############" + event.getEntity().getVelocity().toString());
               }else {
                 event.getEntity().setVelocity(event.getEntity().getVelocity().setZ(event.getEntity().getVelocity().getBlockZ() - 3));
                 System.out.println("2###############" + event.getEntity().getVelocity().toString());
               }
             }
             
           }
           System.out.println("3###############" + event.getEntity().getVelocity().toString());
Но стрела все равно слетает, если игрок стреляет по диагонали, а не прямо по осям.
 
Как-то запутанно у вас все.
Vector v = event.getEntity().getVelocity();
if(v.getX() > v.getZ())
v.add(20, 0, 0);
else
v.add(0, 0,0 20);
Вот примерный код.
 
Когда смотрел, то вектора были еще и отрицательными, поэтому так и сделал.
 
Мне кажется, что надо умножить X и Z на одно и тоже число И/ИЛИ прибавить константу/умножить на коэффициент скорость по Y.
 
Назад
Верх