Как создать вектор направления взгляда игрока [может быть полезно для создания оружия]

Используем блок функции, получаем значение местоположения из YAW [A]
и добавьте условие: если сравнить число A < 0, то A += 360.


P.S. Yaw — это угол поворота вокруг вертикальной оси. В контексте Minecraft - это поворот игрока влево или вправо. Угол yaw измеряется в градусах, где 0° указывает на направление, в котором игрок смотрит изначально (обычно это направление на юг), 90° — на запад, 180° — на север, и -90° (270) — на восток

Далее получаем радиан переменной A в переменную B, выводим значение косинуса и синуса из переменной B [Cos и Sin]

P.S. Можно умножить значения Cos и Sin, в переменную K, на количество блоков, на которых она должна находиться.

Теперь установим местоположение в качестве местоположения глаза игрока, где координата x += Cos [косинус] и координата z += Sin [синус].

Для проверки наличия вектора - можно воспроизводить частицы в этом местоположении, чтобы увидеть вектор.



Если кратко:

  • x компонент вычисляется с использованием синуса yaw и косинуса pitch.

  • y компонент вычисляется с использованием синуса pitch.

  • z компонент вычисляется с использованием косинуса yaw и косинуса pitch.

Для гениев: (нет), .jar

Java:
import org.bukkit.util.Vector;

public class PlayerLookVector {

    public static Vector getLookVector(float yaw, float pitch) {
        // Преобразование углов из градусов в радианы
        double yawRadians = Math.toRadians(yaw);
        double pitchRadians = Math.toRadians(pitch);

        // Вычисление компонентов вектора взгляда
        double x = -Math.sin(yawRadians) * Math.cos(pitchRadians);
        double y = -Math.sin(pitchRadians);
        double z = Math.cos(yawRadians) * Math.cos(pitchRadians);

        // Возвращаем вектор взгляда
        return new Vector(x, y, z).normalize(); // Нормализуем вектор
    }
}

И вывод:


Java:
ector lookVector = getLookVector(player.getLocation().getYaw(), player.getLocation().getPitch());
player.setVelocity(lookVector.multiply(speed)); // speed - это желаемая скорость

P.S: java код тут для тех, кто понимает его и для того, чтобы люди на примере его поняли все процессы, которые можно вывести в креативе.
 
Последнее редактирование:

Mee8YT

Эксперт
Регистрация
3 Май 2023
Сообщения
358
Используем блок функции, получаем значение местоположения из YAW [A]
и добавьте условие: если сравнить число A < 0, то A += 360.


P.S. Yaw — это угол поворота вокруг вертикальной оси. В контексте Minecraft - это поворот игрока влево или вправо. Угол yaw измеряется в градусах, где 0° указывает на направление, в котором игрок смотрит изначально (обычно это направление на юг), 90° — на запад, 180° — на север, и -90° (270) — на восток

Далее получаем радиан переменной A и получаем значение косинуса и синуса из переменной B [Cos и Sin]

P.S. Можно умножить значения Cos и Sin, в переменную K, на количество блоков, на которых она должна находиться.

Теперь установим местоположение в качестве местоположения глаза игрока, где координата x += Cos [косинус] и координата z += Sin [синус].

Для проверки наличия вектора - можно воспроизводить частицы в этом местоположении, чтобы увидеть вектор.



Если кратко:

  • x компонент вычисляется с использованием синуса yaw и косинуса pitch.

  • y компонент вычисляется с использованием синуса pitch.

  • z компонент вычисляется с использованием косинуса yaw и косинуса pitch.

Для гениев: (java), .jar

Java:
import org.bukkit.util.Vector;

public class PlayerLookVector {

    public static Vector getLookVector(float yaw, float pitch) {
        // Преобразование углов из градусов в радианы
        double yawRadians = Math.toRadians(yaw);
        double pitchRadians = Math.toRadians(pitch);

        // Вычисление компонентов вектора взгляда
        double x = -Math.sin(yawRadians) * Math.cos(pitchRadians);
        double y = -Math.sin(pitchRadians);
        double z = Math.cos(yawRadians) * Math.cos(pitchRadians);

        // Возвращаем вектор взгляда
        return new Vector(x, y, z).normalize(); // Нормализуем вектор
    }
}

И вывод:


Java:
ector lookVector = getLookVector(player.getLocation().getYaw(), player.getLocation().getPitch());
player.setVelocity(lookVector.multiply(speed)); // speed - это желаемая скорость
ок спосибо
я не шарю за циклы правда, но помоги мне этот java, jar код на криавтие запустить
Сообщение объединено:

Для гениев: (java), .jar

Java:
import org.bukkit.util.Vector;

public class PlayerLookVector {

public static Vector getLookVector(float yaw, float pitch) {
// Преобразование углов из градусов в радианы
double yawRadians = Math.toRadians(yaw);
double pitchRadians = Math.toRadians(pitch);

// Вычисление компонентов вектора взгляда
double x = -Math.sin(yawRadians) * Math.cos(pitchRadians);
double y = -Math.sin(pitchRadians);
double z = Math.cos(yawRadians) * Math.cos(pitchRadians);

// Возвращаем вектор взгляда
return new Vector(x, y, z).normalize(); // Нормализуем вектор
}
}
И вывод:

Java:
ector lookVector = getLookVector(player.getLocation().getYaw(), player.getLocation().getPitch());
player.setVelocity(lookVector.multiply(speed)); // speed - это желаемая скорость
а если без рофла, сделай сноску Для не совсем гениев:
 
Сверху