Menu
CoddyTech

Ö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.

challenge icon

Görev

Kolay

Oyuncu, 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.
}
quiz iconKendini test et

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