Menu
CoddyTech

Item yang Bisa Diambil

Termasuk bagian Fisika dan Gameplay dalam perjalanan Unity di Coddy. Pelajaran 17 dari 71.

Barang yang bisa diambil adalah pemicu dengan skripnya sendiri. Saat sesuatu memasukinya, barang itu memeriksa apakah yang masuk adalah pemain, memberikan efeknya, lalu menghancurkan dirinya sendiri. Skrip pemain menyimpan hasilnya dan menyediakan method publik untuk itu. Paket kesehatan ini menyembuhkan apa pun yang memiliki skrip Health:

// 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, pada pemain
public int hp = 50;

public void Heal(int amount)
{
    hp = Mathf.Min(hp + amount, 100);
    Debug.Log("HP: " + hp);
}

other.TryGetComponent(out Health health) bernilai false untuk peti yang meluncur ke dalam paket, jadi hanya object dengan skrip Health yang bisa mengambilnya, dan pemain dengan kesehatan penuh membiarkan paket itu tetap ada untuk nanti. Paket ini menemukan pemain melalui other, jadi tidak ada paket yang memerlukan referensi Inspector, dan satu level bisa memuat lima puluh paket. Heal bersifat public karena skrip lain memanggilnya, dan batas 100 berada di Health, satu-satunya tempat yang memiliki hp. Destroy(gameObject) menghapus paket; Destroy(other.gameObject) akan menghapus pemain.

challenge icon

Tantangan

Mudah

Buat peti amunisi mengisi ulang Blaster (ammo 4, maxAmmo 10).

  1. Di Blaster.cs, tambahkan public int AddAmmo(int amount): int taken = Mathf.Min(amount, maxAmmo - ammo);, tambahkan nilainya ke ammo, catat "Ammo: " + ammo, lalu kembalikan taken.
  2. Di AmmoCrate.cs, saat other.TryGetComponent(out Blaster blaster), panggil blaster.AddAmmo(amount); dan Destroy(gameObject);.

Tekan tombol “Main” dan berjalanlah ke kanan: Console menampilkan Ammo: 7, lalu Ammo: 10. Kemudian tekan tombol “Periksa”.

Coba sendiri

using UnityEngine;

public class AmmoCrate : MonoBehaviour
{
    public int amount = 3;

    void OnTriggerEnter(Collider other)
    {
        // Blaster milik pemain mengambil amunisi, lalu petinya menghilang
    }
}

Semua pelajaran di Fisika dan Gameplay

Latihan sendiri: Playground Unity