Menu
CoddyTech

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

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

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

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

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

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

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

Задание

Легко

Заставь лягушку прыгать один раз при каждом нажатии клавиши Space.

  1. Под комментарием напиши if (Input.GetKeyDown(KeyCode.Space)).
  2. Внутри него вызови rb.AddForce(Vector3.up * jumpImpulse, ForceMode.Impulse);, чтобы учитывалась масса лягушки — 2 кг.

Нажми «Играть» и нажми Space: лягушка подпрыгнет и упадёт обратно. Затем нажми «Проверить».

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

using UnityEngine;

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

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

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

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

Потренируйтесь самостоятельно: Песочница Unity