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.
Tantangan
MudahPemain 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 publikint AddAmmo(int amount). Method ini mengambil sebanyak mungkin dariamountselama tidak melebihimaxAmmo, mencatat jumlah baru sepertiAmmo: 7, dan mengembalikan jumlah yang diambil. - Di
AmmoCrate.cs, saat pemain memasuki peti, tawarkanamountmilik 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
}
}
Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Fisika dan Gameplay
1Rigidbody
Gravitasi dan MassaDorong dengan AddForceMelompat dengan ImpulsFixedUpdate untuk FisikaKecepatanBenda KinematikRingkasan: Landasan Peluncur2Tabrakan
OnCollisionEnterApa yang Kutabrak?Pecah Saat BenturanBerdiri di Atas TanahPantulan dan GesekanBentuk ColliderRangkuman: Dinding yang Bisa Hancur