Помогите Рывок для игрока

  • Автор темы Автор темы MOR_IV
  • Дата начала Дата начала

MOR_IV

Активный участник
Пользователь
Баллы
88
Имя в Minecraft
MOR_IV
Приветствую. В геометрии не силён, вот и пишу сюда.
Имеем игрока, так вот его надо толкнуть в направлении взгляда на определенное количество блоков.
Уже давно ломаю голову.
Если беру вектор взгляда, умножаю на число, то вверх летит очень сильно, а стоя на земле на короткое расстояние.
Может есть у кого готовое решение?
Любые идеи.
 
Умножай x и z взгляда на один коэффициент, а y на другой =)
 
Java:
    public static void pushTo(Entity target, Location to, double multiply) {
        Vector unitVector = to.toVector().subtract(target.getLocation().toVector()).normalize();
        target.setVelocity(unitVector.multiply(multiply).add(new Vector(0.0, 0.1, 0.0)));
    }

    public static void pushFrom(Entity target, Location from, double multiply) {
        Vector unitVector = target.getLocation().toVector().subtract(from.toVector()).normalize();
        target.setVelocity(unitVector.multiply(multiply).add(new Vector(0.0, 0.1, 0.0)));
    }
Это должно помочь в реализации
 
Умножай x и z взгляда на один коэффициент, а y на другой =)
Да действительно, стало лучше.

Java:
    public static void pushTo(Entity target, Location to, double multiply) {
        Vector unitVector = to.toVector().subtract(target.getLocation().toVector()).normalize();
        target.setVelocity(unitVector.multiply(multiply).add(new Vector(0.0, 0.1, 0.0)));
    }

    public static void pushFrom(Entity target, Location from, double multiply) {
        Vector unitVector = target.getLocation().toVector().subtract(from.toVector()).normalize();
        target.setVelocity(unitVector.multiply(multiply).add(new Vector(0.0, 0.1, 0.0)));
    }
Это должно помочь в реализации

Честно, мало помогло. Мне проще взять просто вектор взгляда и умножить.

Ещё идеи?
 
Бери motionX и MotionZ *= 2.0f;
Должно толкнуть как следует.
 
motionX *= 0.4F;
motionY *= 0.7F;
motionZ *= 0.4F;
 
Назад
Верх