Menu
CoddyTech

Nhảy bằng xung lực

Thuộc phần Vật lý và lối chơi trong hành trình Unity của Coddy. Bài học 3 trên 71.

AddForce nhận tham số thứ hai là ForceMode, cho biết cách sử dụng vectơ. Nếu không truyền tham số này, bạn sẽ nhận được ForceMode.Force, một lực đẩy kéo dài trong một bước vật lý, nên cần cộng lực đó qua từng bước. Một cú đá, cú nhảy hoặc vụ nổ xảy ra tức thời, đó là ForceMode.Impulse: toàn bộ lực đẩy được áp dụng trong một lần, làm thay đổi tốc độ một lượng bằng xung lực chia cho khối lượng.

Quả bóng đá này (0.5 kg) sẽ bị đá khi bạn nhấp chuột. Tốc độ của nó tăng thêm (0, 2, 6) / 0.5 = (0, 4, 12) m/s ở bước vật lý tiếp theo, rồi trọng lực và mặt cỏ sẽ tác động lên nó:

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

Bạn có thể gọi lực đẩy một lần từ Update() ở khung hình xảy ra cú nhấp chuột: Unity giữ lực đó và áp dụng ở bước vật lý tiếp theo. Bốn chế độ khác nhau theo hai cách: áp dụng tức thời hoặc trong một bước, và có tính đến khối lượng hay không:

  • Force: áp dụng trong một bước, chia cho khối lượng (động cơ, gió).
  • Acceleration: áp dụng trong một bước, không tính đến khối lượng.
  • Impulse: áp dụng tức thời, chia cho khối lượng (cú đá, cú nhảy).
  • VelocityChange: áp dụng tức thời, không tính đến khối lượng: vectơ được cộng thẳng vào tốc độ.
challenge icon

Thử thách

Dễ

Khi nhấn phím Space, hãy làm cho ếch nhảy một lần.

  1. Bên dưới chú thích, viết if (Input.GetKeyDown(KeyCode.Space)).
  2. Bên trong câu lệnh đó, gọi rb.AddForce(Vector3.up * jumpImpulse, ForceMode.Impulse); để ếch có khối lượng 2 kg.

Nhấn Chơi rồi nhấn Space: ếch bật lên rồi rơi xuống. Sau đó nhấn Kiểm tra.

Tự làm thử

using UnityEngine;

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

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

    void Update()
    {
        // Space: một lực đẩy lên duy nhất với cường độ jumpImpulse
    }
}

Tất cả bài học trong Vật lý và lối chơi

Tự luyện tập: Playground Unity