Toplanabilirler
Coddy'nin Unity Journey'sinin Fizik ve Oynanış bölümünün bir parçası. Ders 17 / 71.
Bir eşya alımı, kendine ait bir betiği olan bir tetikleyicidir. Bir şey içeri girdiğinde eşya alımı bunun oyuncu olup olmadığını kontrol eder, etkisini ona verir ve kendini yok eder. Oyuncunun betiği sonucu saklar ve bu işlem için genel bir yöntem sunar. Bu sağlık paketi, Health betiğine sahip her şeyi iyileştirir:
// HealthPack.cs
public int amount = 25;
void OnTriggerEnter(Collider other)
{
if (other.TryGetComponent(out Health health) && health.hp < 100)
{
health.Heal(amount);
Destroy(gameObject);
}
}// Health.cs, oyuncunun üzerinde
public int hp = 50;
public void Heal(int amount)
{
hp = Mathf.Min(hp + amount, 100);
Debug.Log("HP: " + hp);
}other.TryGetComponent(out Health health), pakete doğru kayan bir sandık için false değerini verir; bu nedenle paketi yalnızca Health betiğine sahip bir nesne alabilir ve canı tamamen dolu olan bir oyuncu paketi daha sonra almak üzere bırakır. Paket oyuncuyu other üzerinden bulduğundan, hiçbir paketin Inspector referansına ihtiyacı yoktur ve bir seviye bunlardan elli tane barındırabilir. Başka bir betik Heal yöntemini çağırdığı için bu yöntem public olur ve 100 sınırı, hp değerinin sahibi olan tek yer Health'te bulunur. Destroy(gameObject) paketi kaldırır; Destroy(other.gameObject) ise oyuncuyu kaldırır.
Görev
KolayMühimmat kasalarının Blaster'ın mühimmatını doldurmasını sağla (ammo 4, maxAmmo 10).
Blaster.csdosyasınapublic int AddAmmo(int amount)ekle:int taken = Mathf.Min(amount, maxAmmo - ammo);, bunuammodeğerine ekle,"Ammo: " + ammodeğerini günlüğe kaydet vetakendeğerini döndür.AmmoCrate.csdosyasında,other.TryGetComponent(out Blaster blaster)koşulu sağlandığındablaster.AddAmmo(amount);çağır veDestroy(gameObject);çalıştır.
“Oyna” düğmesine bas ve sağa yürü: Konsol önce Ammo: 7, sonra Ammo: 10 gösterir. Ardından “Kontrol et” düğmesine bas.
Kendin dene
using UnityEngine;
public class AmmoCrate : MonoBehaviour
{
public int amount = 3;
void OnTriggerEnter(Collider other)
{
// Oyuncunun Blaster'ı cephaneyi alır ve sandık ortadan kaybolur
}
}
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