Collider kích hoạt
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 15 trên 71.
Một collider được chọn Is Trigger sẽ không còn là vật thể rắn: các rigidbody đi xuyên qua nó, còn Unity sẽ ghi nhận vùng chồng lấn bằng cách gọi OnTriggerEnter trong script của cả hai đối tượng. Vạch đích, vật phẩm nhặt được và vùng nguy hiểm đều dùng trigger. Trong code, ô này tương ứng với thuộc tính isTrigger của collider.
Vùng báo động của căn hầm này chuyển collider thành trigger khi trò chơi bắt đầu, tương đương với việc chọn ô đó, rồi phát báo động khi lính canh bước vào:
void Start()
{
GetComponent<Collider>().isTrigger = true;
}
void OnTriggerEnter(Collider other)
{
Debug.Log("Alarm!");
}Trigger tuân theo quy tắc giống như va chạm: Unity chỉ kiểm tra một cặp khi ít nhất một trong hai đối tượng có Rigidbody. Hai đối tượng không có Rigidbody sẽ không bao giờ ghi nhận nhau, dù có trigger hay không. Lính canh tuần tra bằng script, nên mỗi lính canh có một Rigidbody động học (Add Component, Rigidbody, chọn Is Kinematic): trọng lực và va đập không ảnh hưởng đến nó, nhưng nó vẫn được tính là một Rigidbody. Nếu lính canh không có Rigidbody, họ sẽ đi xuyên qua vùng đó và Console vẫn trống. Nếu không có isTrigger, vùng đó là một hộp rắn, và một vật thể động học không bao giờ chạm vào collider không có Rigidbody, nên cũng không có gì được ghi lại. Chỉ cần một Rigidbody trong cặp, ở một trong hai đối tượng. Bài học tiếp theo sẽ tìm hiểu về other, collider vừa đi vào.
Thử thách
DễĐiều khiển drone bay qua các vòng và để mỗi vòng ghi nhận nó.
- Trong
Start()củaDrone.cs, đặtbody = gameObject.AddComponent<Rigidbody>();vàbody.isKinematic = true;để drone bay ngang. - Trong
Start()củaRing.cs, đặtGetComponent<Collider>().isTrigger = true;.
Nhấn Chơi: drone bay qua các vòng và Console hiển thị Ring1 passed, Ring2 passed và Ring3 passed. Sau đó nhấn Kiểm tra.
Tự làm thử
using UnityEngine;
public class Ring : MonoBehaviour
{
void Start()
{
// Đặt collider của vòng này thành trigger
}
void OnTriggerEnter(Collider other)
{
Debug.Log(name + " passed");
}
}
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