Khởi chạy
Bài học 2 trên 19 trong khóa học Trò chơi Unity: phá gạch của Coddy.
Quả bóng nằm trên thanh đỡ cho đến khi người chơi phóng nó đi. Cho đến lúc đó, Update() đặt bóng lên trên thanh đỡ ở mỗi khung hình, nên bóng di chuyển theo thanh đỡ, còn một bool ghi nhớ liệu bóng đã bay đi hay chưa:
void Update()
{
if (launched) return;
transform.position = paddle.position + Vector3.up * 0.5f;
}Rigidbody của quả bóng không có trọng lực, nên chỉ cần đặt vận tốc một lần là bóng sẽ bay thẳng. wasPressedThisFrame chỉ có giá trị true trong khung hình phím được nhấn, vì vậy hãy đọc giá trị này trong Update(). Để bóng bay theo bất kỳ hướng nào với tốc độ chính xác, hãy chuẩn hóa hướng thành vectơ dài 1 đơn vị bằng .normalized, rồi nhân với tốc độ: new Vector3(3f, 4f, 0f).normalized * 10f khiến bóng bay với tốc độ 10 đơn vị mỗi giây.
Thử thách
DễQuả bóng nằm trên thanh đỡ cho đến khi bạn nhấn phím cách để phóng nó.
- Trong
Ball, thêmbool launched;vàpublic void Launch(Vector3 direction):launched = true;vàrb.linearVelocity = direction.normalized * speed; - Trong
Update(), trả về nếu bóng đã được phóng; nếu chưa, đặt bóng tạipaddle.position + Vector3.up * 0.5f. - Khi phím cách
wasPressedThisFrame, gọiLaunch(new Vector3(0.3f, 1f, 0f)).
Nhấn Chơi, di chuyển thanh đỡ, rồi nhấn phím cách: bóng bay lên và dừng ở bức tường đầu tiên (bóng sẽ nảy ở phần tiếp theo). Sau đó nhấn Kiểm tra.
Tự làm thử
using UnityEngine;
using UnityEngine.InputSystem;
public class Ball : MonoBehaviour
{
public Transform paddle;
public float speed = 9f;
Rigidbody rb;
void Awake()
{
rb = GetComponent<Rigidbody>();
}
// Tiếp theo: quả bóng nằm trên thanh đỡ cho đến khi bạn nhấn Space để phóng nó đi.
}
Tất cả bài học trong Trò chơi Unity: phá gạch
Tự luyện tập: Playground Unity