-
Автор темы
- #1
Перед прочтением основного контента ниже, пожалуйста, обратите внимание на обновление внутри секции Майна на нашем форуме. У нас появились:
- бесплатные читы для Майнкрафт — любое использование на свой страх и риск;
- маркетплейс Майнкрафт — абсолютно любая коммерция, связанная с игрой, за исключением продажи читов (аккаунты, предоставления услуг, поиск кодеров читов и так далее);
- приватные читы для Minecraft — в этом разделе только платные хаки для игры, покупайте группу "Продавец" и выставляйте на продажу свой софт;
- обсуждения и гайды — всё тот же раздел с вопросами, но теперь модернизированный: поиск нужных хаков, пати с игроками-читерами и другая полезная информация.
Спасибо!
!!Это перевод ссылка на оригинальную страницу в конце!!
///
Strafe - это модуль, который позволяет нам менять направление движения с помощью клавиш перемещения (WASD) без потери скорости движения.
Направление нашего движения определяется переменными motionX/Y/Z, а значит, чтобы изменить направление движения, нам нужно изменить эти значения соответствующим образом.
Но как это работает?
Значения движения основаны на нашем текущем yaw и могут быть рассчитаны с помощью тригеометрических функций (синус, косинус, тангенс). Вот гифка, показывающая игрока сверху, чтобы показать, как наш yaw влияет на ввод с клавиатуры (WASD).
Чтобы направление движения зависело только от входного сигнала движения, нам нужно только скорректировать текущий yaw и пересчитать значения движения. Например, если наш yaw ровно 0°, а мы хотим отклониться влево, нам нужно настроить значения движения так, как если бы наш yaw было -90°.
Для этого мы сначала создадим метод, который вернет нужное нам значение Yaw
Дале чтобы узнать, какие клавиши движения я нажимаю, я использую mc.thePlayer.moveStrafing, к которому
1 прибавляется, когда мы нажимаем A("Влево"), или 1 вычитается, когда мы нажимаем D("Вправо").
Соответственно, я просто прибавляю или вычитаю 90 к нашему текущему движению yaw
Теперь у нас есть правый yaw, необходимый для бокового стрейфа.
Но, как мы видим на GIF выше, когда мы нажимаем W("Вперед") и A/D("Влево/Вправо"), мы должны вычесть 45° из нашего yaw. Если мы нажмем W(вперед) и A/D(влево/вправо), что мы узнаем с помощью mc.thePlayer.moveForward (эта переменная работает аналогично moveStrafing, то есть прибавляет 1 при нажатии W(вперед) и вычитает 1 при нажатии S(назад)), нам нужно будет добавить/вычесть только 45°
Этот код не учитывает S("Назад"), поэтому нам нужно просто добавить 180° к текущему yaw. Однако это ломает наш текущий стрейфинг, потому что если мы нажмем W(Вперед) и D(Вправо), то получим:
yaw = 0
Yaw += 180 | yaw равен 180
Yaw += 45 | yaw = 225
Таким образом, мы будем отклоняться влево. Чтобы исправить это, нам нужно инвертировать 45°, когда мы бежим назад.
Этот метод можно значительно сократить, чего я сейчас делать не буду.
Все, что нам теперь нужно сделать для стрейфа, - это пересчитать значения движения с учетом yaw, возвращаемого методом:
~
///
Strafe - это модуль, который позволяет нам менять направление движения с помощью клавиш перемещения (WASD) без потери скорости движения.
Направление нашего движения определяется переменными motionX/Y/Z, а значит, чтобы изменить направление движения, нам нужно изменить эти значения соответствующим образом.
Но как это работает?
Значения движения основаны на нашем текущем yaw и могут быть рассчитаны с помощью тригеометрических функций (синус, косинус, тангенс). Вот гифка, показывающая игрока сверху, чтобы показать, как наш yaw влияет на ввод с клавиатуры (WASD).
Чтобы направление движения зависело только от входного сигнала движения, нам нужно только скорректировать текущий yaw и пересчитать значения движения. Например, если наш yaw ровно 0°, а мы хотим отклониться влево, нам нужно настроить значения движения так, как если бы наш yaw было -90°.
Для этого мы сначала создадим метод, который вернет нужное нам значение Yaw
Java:
public static float getPlayerDirection() {
// начните с нашего текущего yaw
float yaw = mc.thePlayer.rotationYaw;
return yaw;
}
1 прибавляется, когда мы нажимаем A("Влево"), или 1 вычитается, когда мы нажимаем D("Вправо").
Соответственно, я просто прибавляю или вычитаю 90 к нашему текущему движению yaw
Java:
public static float getPlayerDirection() {
// начните с нашего текущего Yaw
float yaw = mc.thePlayer.rotationYaw;
if (mc.thePlayer.moveStrafing > 0) {
// вычтите 90, чтобы переместиться влево
yaw -= 90;
} else if (mc.thePlayer.moveStrafing < 0) {
// добавьте 90, чтобы повернуть вправо
yaw += 90;
}
return yaw;
}
Но, как мы видим на GIF выше, когда мы нажимаем W("Вперед") и A/D("Влево/Вправо"), мы должны вычесть 45° из нашего yaw. Если мы нажмем W(вперед) и A/D(влево/вправо), что мы узнаем с помощью mc.thePlayer.moveForward (эта переменная работает аналогично moveStrafing, то есть прибавляет 1 при нажатии W(вперед) и вычитает 1 при нажатии S(назад)), нам нужно будет добавить/вычесть только 45°
Java:
public static float getPlayerDirection() {
// начните с нашего текущего yaw
float yaw = mc.thePlayer.rotationYaw;
if (mc.thePlayer.moveStrafing > 0) {
// вычтите 45, чтобы переместиться влево вперед
yaw -= 45;
// вычтите еще 45, если мы не нажмем W, чтобы получить -90
if (mc.thePlayer.moveForward == 0) {
yaw -= 45;
}
} else if (mc.thePlayer.moveStrafing < 0) {
// добавьте 45, чтобы направиться прямо вперед
yaw += 45;
// добавьте 45, если мы не нажмем W, чтобы получить 90
if (mc.thePlayer.moveForward == 0) {
yaw += 45;
}
}
return yaw;
}
yaw = 0
Yaw += 180 | yaw равен 180
Yaw += 45 | yaw = 225
Таким образом, мы будем отклоняться влево. Чтобы исправить это, нам нужно инвертировать 45°, когда мы бежим назад.
Java:
public static float getPlayerDirection() {
// начинаем с нашего текущего yaw
float yaw = mc.thePlayer.rotationYaw;
float strafe = 45;
// добавляем 180 к yaw, чтобы повернуть назад
if(mc.thePlayer.moveForward < 0){
// инвертируем наш стрейф на -45
strafe = -45;
yaw += 180;
}
if (mc.thePlayer.moveStrafing > 0) {
// вычитаем 45, чтобы выполнить стрейф влево вперед
yaw -= strafe;
// вычитаем еще 45, если мы не нажмем W, чтобы получить -90
if (mc.thePlayer.moveForward == 0) {
yaw -= 45;
}
} else if (mc.thePlayer.moveStrafing < 0) {
// добавьте 45 для стрейфа вправо вперед
yaw += strafe;
// добавляем 45, если мы не нажмем W, чтобы дойти до 90
if (mc.thePlayer.moveForward == 0) {
yaw += 45;
}
}
return yaw;
}
Все, что нам теперь нужно сделать для стрейфа, - это пересчитать значения движения с учетом yaw, возвращаемого методом:
Java:
if (isPlayerMoving()) {
double currentPlayerSpeed = Math.sqrt(mc.thePlayer.motionX * mc.thePlayer.motionX + mc.thePlayer.motionZ * mc.thePlayer.motionZ);
double yaw = Math.toRadians(getPlayerDirection());
mc.thePlayer.motionZ = Math.cos(yaw) * currentPlayerSpeed;
mc.thePlayer.motionX = -Math.sin(yaw) * currentPlayerSpeed;
}
Пожалуйста, авторизуйтесь для просмотра ссылки.
Вложения
-
68.3 KB Просмотры: 18