Menu
CoddyTech

Giriş ve Çıkış

Coddy'nin Unity Journey'sinin Fizik ve Oynanış bölümünün bir parçası. Ders 20 / 71.

Tetikleyici iki mesaj daha gönderir. OnTriggerExit(Collider other), çakışma nasıl sona ererse ersin, çakışma sona erdiği fizik adımında bir kez çalışır. OnTriggerStay(Collider other), çakışma devam ettiği sürece varsayılan olarak saniyede 50 kez, FixedUpdate() gibi her fizik adımında çalışır. Üçü de aynı Collider değerini alır.

Bu yükselen hava akımı, içinde yüzen her şeyi yukarı kaldırır ve içinden çıktığında bunu bildirir:

public float lift = 15f;

void OnTriggerStay(Collider other)
{
    other.attachedRigidbody.AddForce(Vector3.up * lift);
}

void OnTriggerExit(Collider other)
{
    Debug.Log(other.name + " left the updraft");
}

Kuvvet bir fizik adımında uygulanmalıdır, bu nedenle OnTriggerStay bu iş için uygundur: top içeride kaldığı sürece itme her adımda bir kez uygulanır ve top çıkar çıkmaz durur. Yükselen hava akımının Rigidbody bileşeni yoktur; bu nedenle içeri giren her nesnenin bir Rigidbody bileşeni olmalıdır ve burada attachedRigidbody hiçbir zaman null olmaz. OnTriggerStay içinde saniyelik bir miktar uygulamak için Time.deltaTime ile çarpın; bu değer fizik adımı sırasında adımın uzunluğudur: 0.02. Her girişte aynı çarpıştırıcı için bir OnTriggerEnter ve daha sonra bir OnTriggerExit çağrısı gerçekleşir.

challenge icon

Görev

Kolay

Yükleme alanında herhangi bir şey varken lambayı yak.

  1. Bir int inBay; alanı ekle. Start() içinde lamp.enabled = false; olarak ayarla.
  2. OnTriggerEnter içinde inBay değerini 1 artır ve lamp.enabled = true; olarak ayarla.
  3. OnTriggerExit içinde inBay değerini 1 azalt ve lambayı yalnızca değer 0 olduğunda kapat.

“Oyna” düğmesine bas ve kasaları içeri ve dışarı it: alan boşalana kadar lamba yanık kalır. Ardından “Kontrol et” düğmesine bas.

Kendin dene

using UnityEngine;

public class LoadingBay : MonoBehaviour
{
    public Light lamp;

    // Bölmede herhangi bir şey varken lamba yanar, bölme boşken söner
}

Fizik ve Oynanış bölümündeki tüm dersler

Kendi başına pratik yap: Unity playground