OverlapSphere và SphereCast
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 40 trên 71.
Ray hỏi về một đường thẳng. Physics.OverlapSphere(center, radius) hỏi về một vùng hình cầu: nó trả về một mảng chứa mọi collider chạm vào hình cầu tại center, không có hướng hay khoảng cách. Quả bom này phá hủy mọi thùng hàng trong phạm vi 3 đơn vị khi phát nổ:
void Explode()
{
Collider[] hits = Physics.OverlapSphere(transform.position, 3f);
foreach (Collider c in hits)
{
if (c.CompareTag("Crate"))
{
Destroy(c.gameObject);
}
}
Destroy(gameObject);
}Mảng chứa mọi thứ trong phạm vi: sàn nhà, tường và collider của chính quả bom, vì phép kiểm tra chồng lấn không bỏ qua collider mà chúng bắt đầu ở bên trong. Vì vậy, vòng lặp kiểm tra tag trước khi hành động. attachedRigidbody của mỗi collider là Rigidbody mà nó thuộc về, hoặc là null đối với những vật thể tĩnh như sàn nhà.
Physics.SphereCast(origin, radius, direction, out hit, maxDistance) là một ray dày: nó quét một hình cầu dọc theo đường thẳng và báo về collider đầu tiên mà hình cầu sẽ va phải. Một tảng đá có bán kính 1 lăn về phía khe hở rộng 1.5 giữa hai cọc sẽ dùng nó để kiểm tra xem tảng đá có lọt qua không: một ray mảnh đi qua giữa khe hở không va phải vật gì, còn phép sphere cast va phải một chiếc cọc. Giống như ray, sphere cast bỏ qua các collider mà nó đã chạm vào tại điểm bắt đầu.
Thử thách
Trung bìnhCho khẩu pháo một luồng bắn rộng bằng Physics.SphereCast.
- Khi nhấn Space, quét một hình cầu:
Physics.SphereCast(transform.position, radius, transform.forward, out RaycastHit hit, range). - Khi bắn trúng, ghi nhật ký
"Hit " + hit.collider.name(phát bắn đầu tiên ghiHit Pole) rồi hủy đối tượng đó. - Khi bắn trượt, ghi nhật ký
Miss.
Nhấn Chơi và bắn ba lần: Pole biến mất, rồi đến Crate, sau đó là Miss. Tiếp theo, nhấn Kiểm tra.
Tự làm thử
using UnityEngine;
public class Beam : MonoBehaviour
{
public float radius = 0.5f;
public float range = 12f;
void Update()
{
if (Input.GetKeyDown(KeyCode.Space))
{
// Quét một hình cầu có bán kính radius về phía trước: phá hủy vật đầu tiên mà nó chạm phải.
}
}
}
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