Quả bóng lăn
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 28 trên 71.
Chương này xây dựng một trò chơi nhỏ, Coin Rush. Bạn lăn một quả bóng quanh đấu trường có tường bằng các phím mũi tên và thu thập xu trước khi hết giờ. Hai tập lệnh cùng đảm nhiệm công việc, như trong một dự án Unity: Ball di chuyển quả bóng, đồng thời theo dõi điểm số và thời gian, còn Coin nằm trên mỗi đồng xu. Coin.cs bắt đầu dưới dạng một lớp trống, và bài học tiếp theo sẽ bổ sung nội dung cho lớp này.
Bóng lăn khi bạn đẩy nó thay vì đặt nó vào vị trí mong muốn. Đẩy Rigidbody bằng AddForce và để bóng tự do xoay: lực làm bóng di chuyển, còn ma sát từ sàn bám vào phần đáy của bóng và làm nó xoay. Quả bóng bowling này lăn xuống đường băng khi bạn giữ phím Space:
public float push = 6f;
private Rigidbody rb;
void Start()
{
rb = GetComponent<Rigidbody>();
}
void FixedUpdate()
{
if (Input.GetKey(KeyCode.Space))
{
rb.AddForce(Vector3.forward * push);
}
}Bóng lăn không trượt sẽ xoay với tốc độ bằng tốc độ di chuyển chia cho bán kính. Vì vậy, quả bóng có bán kính 0.5, di chuyển với tốc độ 3 đơn vị mỗi giây, sẽ xoay với tốc độ 6 radian mỗi giây (rb.angularVelocity). Thay vào đó, hãy thay đổi transform.position, hoặc khóa chuyển động xoay của bóng trong mục Constraints của Rigidbody, thì bóng sẽ trượt như một chiếc đĩa mà không xoay. Một quả cầu đơn sắc trơn trông vẫn như nhau trong cả hai trường hợp: để thấy bóng lăn, hãy theo dõi Angular Velocity trong mục Info của Rigidbody khi trò chơi đang chạy.
Thử thách
Trung bìnhBắt đầu Coin Rush: dùng các phím mũi tên để lăn quả bóng.
- Trong
Start()củaBall.cs, gánrb = GetComponent<Rigidbody>();. - Trong
FixedUpdate(), đọcfloat x = Input.GetAxis("Horizontal");vàfloat z = Input.GetAxis("Vertical");, sau đó gọirb.AddForce(new Vector3(x, 0f, z) * force);.
Nhấn Chơi, nhấp vào trò chơi rồi lăn bóng: quả bóng xoay khi di chuyển. Sau đó nhấn Kiểm tra.
Tự làm thử
using UnityEngine;
public class Ball : MonoBehaviour
{
public float force = 10f;
private Rigidbody rb;
void Start()
{
}
void FixedUpdate()
{
// Dùng các phím mũi tên để đẩy quả bóng: Horizontal theo trục x, Vertical theo trục z.
}
}
Tất cả bài học trong Vật lý và lối chơi
1Rigidbody
Trọng lực và khối lượngĐẩy bằng AddForceNhảy bằng xung lựcFixedUpdate cho vật lýVận tốcVật thể động họcÔn tập: Bệ phóng4Coroutine
InvokeInvokeRepeating, CancelInvokeCoroutine đầu tiên của bạnVòng lặp trong CoroutineDừng CoroutineÔn tập: đếm ngược10Dự án: Thoát khỏi đấu trường
Đấu trườngThợ săn2Va chạm
OnCollisionEnterMình đã va chạm với gì?Vỡ khi va chạmĐứng trên mặt đấtĐộ nảy và ma sátHình dạng colliderÔn tập: Tường có thể phá vỡ5Dự án: Cuộc đua thu thập xu
Quả bóng lănThu thập xuTự luyện tập: Playground Unity