Menu
CoddyTech

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.

challenge icon

Görev

Kolay

Mühimmat kasalarının Blaster'ın mühimmatını doldurmasını sağla (ammo 4, maxAmmo 10).

  1. Blaster.cs dosyasına public int AddAmmo(int amount) ekle: int taken = Mathf.Min(amount, maxAmmo - ammo);, bunu ammo değerine ekle, "Ammo: " + ammo değerini günlüğe kaydet ve taken değerini döndür.
  2. AmmoCrate.cs dosyasında, other.TryGetComponent(out Blaster blaster) koşulu sağlandığında blaster.AddAmmo(amount); çağır ve Destroy(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

Kendi başına pratik yap: Unity playground