Öldürme Bölgeleri
Coddy'nin Unity Journey'sinin Fizik ve Oynanış bölümünün bir parçası. Ders 19 / 71.
Ölüm bölgesi, oyuncunun ulaşmaması gereken bir yerin üzerindeki tetikleyicidir: lav, dikenler veya seviyenin altındaki boşluk. Oyuncu buraya girdiğinde 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, giren çarpıştırıcının bağlı olduğu Rigidbody'dir. transform.position ayarlandığında oyuncu ışınlanır; yeniden doğmak için gereken de budur. Ancak Rigidbody, zıplama 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 gelir; 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 oraya hareketsiz şekilde gelmesini sağlar. Etiket kontrolü, lavın içine düşen diğer her şeyi olduğu yerde bırakır.
Görev
KolayOyuncunun yeniden doğmasını sağla. Bu betik oyuncunun üzerinde olduğundan transform ve body bileşenlerini hareket ettirir, other bileşenini değil.
Start()içindeVector3 respawnalanınıtransform.positionolarak ayarla.OnTriggerEnter(Collider other)içinde,other.CompareTag("Checkpoint")olduğundarespawn = transform.position;olarak ayarla.other.CompareTag("KillZone")olduğundatransform.position = respawn;vebody.linearVelocity = Vector3.zero;olarak ayarla.
“Oyna” düğmesine bas ve köprüden aşağı yürü. Ardından “Kontrol et” düğmesine 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.
}
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 DuvarKendi başına pratik yap: Unity playground