Ölüm Bölgeleri
Coddy'nin Unity Journey'sinin Fizik ve Oynanış bölümünün bir parçası. Ders 18 / 63.
Ölüm bölgesi, oyuncunun ulaşmaması gereken bir yerin üzerindeki tetikleyicidir: lav, sivri uçlar veya seviyenin altındaki boşluk. Oyuncu buraya girdiğinde bir doğma noktasına geri gönderilir. Burada bunu lavın kendi betiği yapar; doğma noktası Inspector'da ayarlanan bir Transform alanındadır:
public Transform spawnPoint;
void OnTriggerEnter(Collider other)
{
if (other.CompareTag("Player"))
{
other.transform.position = spawnPoint.position;
other.attachedRigidbody.linearVelocity = Vector3.zero;
}
}other.attachedRigidbody, içeri giren çarpıştırıcının bağlı olduğu Rigidbody'dir. transform.position değerini ayarlamak oyuncuyu ışınlar; yeniden doğma için gereken de budur. Ancak Rigidbody, sıçrama boyunca hızını korur: saniyede 10 birim hızla düşen bir oyuncu, doğma noktasına hâlâ saniyede 10 birim hızla düşerek ulaşır; lavın içine koşarak giren oyuncu da koşmaya devam eder ve doğruca tekrar lavın içine girer. linearVelocity değerini Vector3.zero olarak ayarlamak, oyuncunun noktaya hareketsiz şekilde ulaşmasını sağlar. Etiket kontrolü, lavın içine düşen diğer her şeyi olduğu yerde bırakır.
Görev
KolayOyuncu, ok tuşlarının kuvvet uygulamasıyla boşluğun üzerindeki dar bir köprüden geçiyor; bu kısım yazılmış durumda. Aşağıdaki boşluğu KillZone etiketli bir tetikleyici dolduruyor ve yine bir tetikleyici olan Checkpoint etiketli bir bayrak köprünün ortasında duruyor. Oyuncunun betiğine yeniden doğma özelliği ekle:
- Oyun başladığında yeniden doğma noktası oyuncunun durduğu yer olur.
- Bir
Checkpoint'e dokunmak, oyuncunun o andaki konumunu yeni yeniden doğma noktası yapar. KillZone'a girmek, oyuncuyu yeniden doğma noktasına geri götürür ve olduğu yerde durmasını sağlar.
Play'e basıp köprüden aşağı yürü, ardından Check'e bas.
Kendin dene
using UnityEngine;
public class Player : MonoBehaviour
{
public float force = 12f;
Rigidbody body;
Vector3 input;
// respawn: oyuncunun geri döndüğü yer
void Start()
{
body = GetComponent<Rigidbody>();
}
void Update()
{
input = new Vector3(Input.GetAxisRaw("Horizontal"), 0f, Input.GetAxisRaw("Vertical"));
}
void FixedUpdate()
{
body.AddForce(input * force);
}
// Checkpoint: oyuncunun bulunduğu yeri hatırla. KillZone: hareketsiz durarak o noktaya geri dön.
}
Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
Fizik ve Oynanış bölümündeki tüm dersler
1Rigidbody
Yerçekimi ve KütleAddForce ile İtmeDürtüyle ZıplamaFizik için FixedUpdateHızKinematik CisimlerTekrar: Fırlatma Rampası2Çarpışmalar
OnCollisionEnterNeye Çarptım?Çarpınca KırılYerde DurmakSekme ve SürtünmeCollider ŞekilleriTekrar: Kırılabilir Duvar