Menu
CoddyTech

Прыжок с импульсом

Часть раздела Физика и игровой процесс путешествия по Unity на Coddy. Урок 3 из 63.

AddForce принимает второй аргумент — ForceMode, который указывает, как использовать вектор. Если его не указать, используется ForceMode.Force — толчок, который длится один шаг физики, поэтому его нужно добавлять шаг за шагом. Удар, прыжок или взрыв происходят мгновенно — это ForceMode.Impulse: весь толчок за один раз, изменяющий скорость на величину импульса, делённую на массу.

По этому футбольному мячу (0.5 кг) щёлкают мышью. На следующем шаге физики его скорость увеличится на (0, 2, 6) / 0.5 = (0, 4, 12) м/с, а дальше на него будут влиять сила тяжести и трава:

void Update()
{
    if (Input.GetMouseButtonDown(0))
    {
        rb.AddForce(new Vector3(0, 2, 6), ForceMode.Impulse);
    }
}

Однократный толчок можно применить из Update() в кадре, когда произошёл щелчок мышью: Unity сохранит его и применит на следующем шаге физики. Четыре режима различаются по двум параметрам: применяется ли толчок мгновенно или в течение шага и учитывается ли масса:

  • Force: в течение шага, с делением на массу (двигатели, ветер).
  • Acceleration: в течение шага, масса не учитывается.
  • Impulse: мгновенно, с делением на массу (удары, прыжки).
  • VelocityChange: мгновенно, масса не учитывается: вектор напрямую прибавляется к скорости.
challenge icon

Задание

Легко

Заставь лягушку прыгнуть. Каждое нажатие пробела даёт ей один толчок вверх с силой jumpImpulse (10 в Inspector). Лягушка весит 2 кг, и при прыжке нужно учитывать её массу: чем тяжелее лягушка, тем ниже она прыгает.

Если удерживать пробел, это всё равно будет один прыжок. Нажми Play и попрыгай, затем нажми Check.

Попробуйте сами

using UnityEngine;

public class FrogJump : MonoBehaviour
{
    public float jumpImpulse = 10f;
    private Rigidbody rb;

    void Start()
    {
        rb = GetComponent<Rigidbody>();
    }

    void Update()
    {
        // Space: один толчок вверх с силой jumpImpulse
    }
}
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Физика и игровой процесс