Menu
CoddyTech

Толкаем с помощью AddForce

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

Когда у объекта есть компонент Rigidbody, им движет физика, поэтому ты перестаёшь менять его положение и вместо этого толкаешь его. rb.AddForce(force) толкает тело с помощью силы — величины Vector3, измеряемой в ньютонах. Сила не задаёт скорость: она ускоряет тело, пока ты продолжаешь её прикладывать, на величину силы, делённой на массу, каждую секунду. Перестань толкать — и тело продолжит двигаться с имеющейся у него скоростью.

У этого ховеркрафта (2 кг) есть двигатель: пока нажата клавиша со стрелкой вверх, сила thrust толкает его вперёд вдоль +z. При тяге 12 скорость увеличивается на 12 / 2 = 6 м/с каждую секунду:

public float thrust = 12f;
private Rigidbody rb;

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

void FixedUpdate()
{
    if (Input.GetKey(KeyCode.UpArrow))
    {
        rb.AddForce(Vector3.forward * thrust);
    }
}

Силы применяются в FixedUpdate(), который Unity вызывает перед каждым шагом физики — 50 раз в секунду (в уроке 4 объясняется почему). В этой строке нет Time.deltaTime: AddForce уже распределяет силу на весь шаг, а умножение на Time.deltaTime сделало бы толчок в 50 раз слабее. На земле трение действует в обратную сторону, поэтому небольшая сила может совсем не сдвинуть тяжёлую коробку.

challenge icon

Задание

Легко

Шайба на ледовом катке имеет компонент Rigidbody, а у льда нет трения. Толкай её стрелками: ось Horizontal толкает её вдоль x, а ось Vertical — вдоль z, с силой push (4 в Inspector).

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

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

using UnityEngine;

public class PuckPusher : MonoBehaviour
{
    public float push = 4f;
    private Rigidbody rb;

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

    void FixedUpdate()
    {
        // Толкаем шайбу: Horizontal вдоль оси x, Vertical вдоль оси z
    }
}
quiz iconПроверьте себя

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

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