Menu
CoddyTech

Item yang Bisa Diambil

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

Pickup adalah pemicu dengan skripnya sendiri. Saat sesuatu masuk, pickup memeriksa apakah itu pemain, memberikan efeknya, lalu menghancurkan dirinya sendiri. Skrip pemain menyimpan hasilnya dan menyediakan method publik untuk efek tersebut. Paket kesehatan ini memulihkan kesehatan 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 masuk ke paket, jadi hanya object dengan skrip Health yang bisa mengambilnya, dan pemain dengan kesehatan penuh akan membiarkan paket itu tetap ada untuk digunakan nanti. Paket menemukan pemain melalui other, jadi tidak ada paket yang memerlukan referensi Inspector, dan satu level bisa memiliki lima puluh paket. Heal bersifat public karena skrip lain memanggilnya, dan batas maksimal 100 berada di Health, satu-satunya tempat yang memiliki hp. Destroy(gameObject) menghapus paket; Destroy(other.gameObject) akan menghapus pemain.

challenge icon

Tantangan

Mudah

Pemain membawa Blaster: ammo (4 di awal) dan maxAmmo (10). Tombol panah menggerakkannya dan tombol Spasi menembakkan peluru, dan keduanya sudah ditulis. Buat peti amunisi mengisi ulang amunisinya:

  • Di Blaster.cs, tambahkan method publik int AddAmmo(int amount). Method ini mengambil sebanyak mungkin dari amount selama tidak melebihi maxAmmo, mencatat jumlah baru seperti Ammo: 7, dan mengembalikan jumlah yang diambil.
  • Di AmmoCrate.cs, saat pemain memasuki peti, tawarkan amount milik peti kepada Blaster dan kurangi jumlah yang diambil. Peti yang sudah kosong akan dihapus; peti yang masih berisi amunisi akan tetap ada dengan sisa amunisinya untuk kunjungan berikutnya.

Peti pertama berisi 3 dan peti kedua berisi 5. Tekan Mainkan, berjalanlah ke kanan, tembak beberapa kali, lalu berjalan kembali memasuki peti kedua, kemudian tekan Periksa.

Coba sendiri

using UnityEngine;

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

    void OnTriggerEnter(Collider other)
    {
        // Blaster milik pemain mengambil sebanyak yang muat; peti menyimpan sisanya dan menghilang setelah kosong
    }
}
quiz iconUji dirimu

Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.

Semua pelajaran di Fisika dan Gameplay