Vùng tiêu diệ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 19 trên 71.
Vùng tiêu diệt là một vùng kích hoạt đặt ở nơi người chơi không được đến: dung nham, chông nhọn hoặc khoảng không bên dưới màn chơi. Khi người chơi bước vào đó, họ sẽ quay lại điểm xuất hiện. Ở đây, script của dung nham tự xử lý việc này, với điểm xuất hiện được đặt trong trường Transform ở cửa sổ Inspector:
public Transform spawnPoint;
void OnTriggerEnter(Collider other)
{
if (other.CompareTag("Player"))
{
other.transform.position = spawnPoint.position;
other.attachedRigidbody.linearVelocity = Vector3.zero;
}
}other.attachedRigidbody là Rigidbody thuộc về collider đi vào vùng kích hoạt. Đặt transform.position sẽ dịch chuyển tức thời người chơi, đúng với cách cần làm khi hồi sinh. Tuy vậy, Rigidbody vẫn giữ nguyên vận tốc sau cú nhảy: người chơi rơi vào với tốc độ 10 đơn vị mỗi giây sẽ xuất hiện tại điểm xuất hiện và vẫn rơi với tốc độ 10, còn người chơi chạy vào dung nham sẽ tiếp tục chạy thẳng trở lại đó. Đặt linearVelocity thành Vector3.zero giúp người chơi xuất hiện trong trạng thái đứng yên. Kiểm tra thẻ giúp mọi thứ khác rơi vào dung nham vẫn ở nguyên vị trí.
Thử thách
DễCho người chơi hồi sinh. Tập lệnh này nằm trên người chơi, vì vậy nó di chuyển transform và body, không phải other.
- Trong
Start(), đặt trườngVector3 respawnthànhtransform.position. - Trong
OnTriggerEnter(Collider other), khiother.CompareTag("Checkpoint"), đặtrespawn = transform.position;. - Khi
other.CompareTag("KillZone"), đặttransform.position = respawn;vàbody.linearVelocity = Vector3.zero;.
Nhấn Chơi và đi khỏi cây cầu. Sau đó nhấn Kiểm tra.
Tự làm thử
using UnityEngine;
public class Player : MonoBehaviour
{
public float force = 12f;
Rigidbody body;
Vector3 input;
// respawn: vị trí người chơi xuất hiện lại
void Start()
{
body = GetComponent<Rigidbody>();
}
void Update()
{
input = new Vector3(Input.GetAxisRaw("Horizontal"), 0f, Input.GetAxisRaw("Vertical"));
}
void FixedUpdate()
{
body.AddForce(input * force);
}
// Checkpoint: ghi nhớ vị trí của người chơi. KillZone: đưa người chơi về vị trí đó và đứng yên.
}
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