• MONEY за подписку! Ничего делать не надо совсем, всего-то подписаться на тг одмена и нажать кнопку "Принять участие" в розыгрыше: https://t.me/govthing/7650

Гайд [Перевод] Стрейфы и с чем их едят

Начинающий
Начинающий
Статус
Оффлайн
Регистрация
18 Июн 2022
Сообщения
323
Реакции
14
!!Это перевод ссылка на оригинальную страницу в конце!!

///

Strafe - это модуль, который позволяет нам менять направление движения с помощью клавиш перемещения (WASD) без потери скорости движения.
Направление нашего движения определяется переменными motionX/Y/Z, а значит, чтобы изменить направление движения, нам нужно изменить эти значения соответствующим образом.

Но как это работает?
Значения движения основаны на нашем текущем yaw и могут быть рассчитаны с помощью тригеометрических функций (синус, косинус, тангенс). Вот гифка, показывающая игрока сверху, чтобы показать, как наш yaw влияет на ввод с клавиатуры (WASD).

REm6zFS.gif


Чтобы направление движения зависело только от входного сигнала движения, нам нужно только скорректировать текущий yaw и пересчитать значения движения. Например, если наш yaw ровно 0°, а мы хотим отклониться влево, нам нужно настроить значения движения так, как если бы наш yaw было -90°.

Для этого мы сначала создадим метод, который вернет нужное нам значение Yaw

Java:
Expand Collapse Copy
public static float getPlayerDirection() {
    // начните с нашего текущего yaw
    float yaw = mc.thePlayer.rotationYaw;
    return yaw;
}

Дале чтобы узнать, какие клавиши движения я нажимаю, я использую mc.thePlayer.moveStrafing, к которому
1 прибавляется, когда мы нажимаем A("Влево"), или 1 вычитается, когда мы нажимаем D("Вправо").
Соответственно, я просто прибавляю или вычитаю 90 к нашему текущему движению yaw

Java:
Expand Collapse Copy
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;
}

Теперь у нас есть правый yaw, необходимый для бокового стрейфа.

Но, как мы видим на GIF выше, когда мы нажимаем W("Вперед") и A/D("Влево/Вправо"), мы должны вычесть 45° из нашего yaw. Если мы нажмем W(вперед) и A/D(влево/вправо), что мы узнаем с помощью mc.thePlayer.moveForward (эта переменная работает аналогично moveStrafing, то есть прибавляет 1 при нажатии W(вперед) и вычитает 1 при нажатии S(назад)), нам нужно будет добавить/вычесть только 45°

Java:
Expand Collapse Copy
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;
}

Этот код не учитывает S("Назад"), поэтому нам нужно просто добавить 180° к текущему yaw. Однако это ломает наш текущий стрейфинг, потому что если мы нажмем W(Вперед) и D(Вправо), то получим:
yaw = 0
Yaw += 180 | yaw равен 180
Yaw += 45 | yaw = 225
Таким образом, мы будем отклоняться влево. Чтобы исправить это, нам нужно инвертировать 45°, когда мы бежим назад.

Java:
Expand Collapse Copy
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:
Expand Collapse Copy
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;
}

~
Пожалуйста, авторизуйтесь для просмотра ссылки.
 

Вложения

  • 1707939981856.png
    1707939981856.png
    68.3 KB · Просмотры: 31
Хоть и перевод но ?
 
!!Это перевод ссылка на оригинальную страницу в конце!!

///

Strafe - это модуль, который позволяет нам менять направление движения с помощью клавиш перемещения (WASD) без потери скорости движения.
Направление нашего движения определяется переменными motionX/Y/Z, а значит, чтобы изменить направление движения, нам нужно изменить эти значения соответствующим образом.

Но как это работает?
Значения движения основаны на нашем текущем yaw и могут быть рассчитаны с помощью тригеометрических функций (синус, косинус, тангенс). Вот гифка, показывающая игрока сверху, чтобы показать, как наш yaw влияет на ввод с клавиатуры (WASD).

REm6zFS.gif


Чтобы направление движения зависело только от входного сигнала движения, нам нужно только скорректировать текущий yaw и пересчитать значения движения. Например, если наш yaw ровно 0°, а мы хотим отклониться влево, нам нужно настроить значения движения так, как если бы наш yaw было -90°.

Для этого мы сначала создадим метод, который вернет нужное нам значение Yaw

Java:
Expand Collapse Copy
public static float getPlayerDirection() {
    // начните с нашего текущего yaw
    float yaw = mc.thePlayer.rotationYaw;
    return yaw;
}

Дале чтобы узнать, какие клавиши движения я нажимаю, я использую mc.thePlayer.moveStrafing, к которому
1 прибавляется, когда мы нажимаем A("Влево"), или 1 вычитается, когда мы нажимаем D("Вправо").
Соответственно, я просто прибавляю или вычитаю 90 к нашему текущему движению yaw

Java:
Expand Collapse Copy
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;
}

Теперь у нас есть правый yaw, необходимый для бокового стрейфа.

Но, как мы видим на GIF выше, когда мы нажимаем W("Вперед") и A/D("Влево/Вправо"), мы должны вычесть 45° из нашего yaw. Если мы нажмем W(вперед) и A/D(влево/вправо), что мы узнаем с помощью mc.thePlayer.moveForward (эта переменная работает аналогично moveStrafing, то есть прибавляет 1 при нажатии W(вперед) и вычитает 1 при нажатии S(назад)), нам нужно будет добавить/вычесть только 45°

Java:
Expand Collapse Copy
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;
}

Этот код не учитывает S("Назад"), поэтому нам нужно просто добавить 180° к текущему yaw. Однако это ломает наш текущий стрейфинг, потому что если мы нажмем W(Вперед) и D(Вправо), то получим:
yaw = 0
Yaw += 180 | yaw равен 180
Yaw += 45 | yaw = 225
Таким образом, мы будем отклоняться влево. Чтобы исправить это, нам нужно инвертировать 45°, когда мы бежим назад.

Java:
Expand Collapse Copy
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:
Expand Collapse Copy
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;
}

~
Пожалуйста, авторизуйтесь для просмотра ссылки.
Сидеть фармить реакции за счет чужого контента это конечно очень сильно
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
!!Это перевод ссылка на оригинальную страницу в конце!!

///

Strafe - это модуль, который позволяет нам менять направление движения с помощью клавиш перемещения (WASD) без потери скорости движения.
Направление нашего движения определяется переменными motionX/Y/Z, а значит, чтобы изменить направление движения, нам нужно изменить эти значения соответствующим образом.

Но как это работает?
Значения движения основаны на нашем текущем yaw и могут быть рассчитаны с помощью тригеометрических функций (синус, косинус, тангенс). Вот гифка, показывающая игрока сверху, чтобы показать, как наш yaw влияет на ввод с клавиатуры (WASD).

REm6zFS.gif


Чтобы направление движения зависело только от входного сигнала движения, нам нужно только скорректировать текущий yaw и пересчитать значения движения. Например, если наш yaw ровно 0°, а мы хотим отклониться влево, нам нужно настроить значения движения так, как если бы наш yaw было -90°.

Для этого мы сначала создадим метод, который вернет нужное нам значение Yaw

Java:
Expand Collapse Copy
public static float getPlayerDirection() {
    // начните с нашего текущего yaw
    float yaw = mc.thePlayer.rotationYaw;
    return yaw;
}

Дале чтобы узнать, какие клавиши движения я нажимаю, я использую mc.thePlayer.moveStrafing, к которому
1 прибавляется, когда мы нажимаем A("Влево"), или 1 вычитается, когда мы нажимаем D("Вправо").
Соответственно, я просто прибавляю или вычитаю 90 к нашему текущему движению yaw

Java:
Expand Collapse Copy
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;
}

Теперь у нас есть правый yaw, необходимый для бокового стрейфа.

Но, как мы видим на GIF выше, когда мы нажимаем W("Вперед") и A/D("Влево/Вправо"), мы должны вычесть 45° из нашего yaw. Если мы нажмем W(вперед) и A/D(влево/вправо), что мы узнаем с помощью mc.thePlayer.moveForward (эта переменная работает аналогично moveStrafing, то есть прибавляет 1 при нажатии W(вперед) и вычитает 1 при нажатии S(назад)), нам нужно будет добавить/вычесть только 45°

Java:
Expand Collapse Copy
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;
}

Этот код не учитывает S("Назад"), поэтому нам нужно просто добавить 180° к текущему yaw. Однако это ломает наш текущий стрейфинг, потому что если мы нажмем W(Вперед) и D(Вправо), то получим:
yaw = 0
Yaw += 180 | yaw равен 180
Yaw += 45 | yaw = 225
Таким образом, мы будем отклоняться влево. Чтобы исправить это, нам нужно инвертировать 45°, когда мы бежим назад.

Java:
Expand Collapse Copy
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:
Expand Collapse Copy
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;
}

~
Пожалуйста, авторизуйтесь для просмотра ссылки.

Где вы блять находите подобную инфу.Хоть и сайты на английском но дайте их пж(а точнее где находятся подобные темы)
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Где вы блять находите подобную инфу.Хоть и сайты на английском но дайте их пж(а точнее где находятся подобные темы)
нахер тему апнул? Ей уже год почти
А инфу чел сам расписал
 
Последнее редактирование:
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.

Похожие темы

Назад
Сверху Снизу