Menambahkan Mekanika Siluman di Unity
Mekanika siluman adalah sistem permainan yang memungkinkan pemain menghindari deteksi musuh. Umumnya digunakan dalam permainan berbasis siluman seperti *Assassin's Creed* atau *Hitman*, mekanika ini mencakup fitur-fitur seperti kerucut penglihatan, deteksi suara, tempat persembunyian, dan tingkat visibilitas pemain. Menambahkan mekanika siluman dapat membuat permainan lebih menarik dengan mendorong pemikiran strategis dan menghargai perencanaan yang cermat.
Dalam tutorial ini, kita akan membuat mekanisme dasar stealth di Unity. Pemain akan terhindar dari deteksi musuh yang memiliki kerucut penglihatan. Jika pemain memasuki kerucut tersebut, mereka akan terdeteksi.
Langkah 1: Menyiapkan Adegan
Mulailah dengan membuat adegan Unity sederhana:
- Buat proyek Unity baru.
- Tambahkan Plane untuk berfungsi sebagai ground.
- Tambahkan model 3D (misalnya, Kapsul) untuk mewakili Pemain.
- Tambahkan model 3D lain (misalnya, Kubus) untuk mewakili Musuh.
- Posisikan Pemain dan Musuh di lokasi berbeda di Pesawat.
Langkah 2: Membuat Kerucut Visi Musuh
Kami akan mensimulasikan penglihatan musuh menggunakan area pemicu berbentuk kerucut:
- Klik kanan dalam Hirarki dan pilih Buat > Objek 3D > Silinder.
- Ubah ukuran silinder agar tampak seperti kerucut dengan menyesuaikan skalanya (misalnya, X = 1, Y = 0,5, Z = 1).
- Putar sehingga alas datar menghadap ke depan (misalnya, Rotasi X = 90).
- Lampirkan sebagai anak dari GameObject Musuh.
- Atur Collider kerucut menjadi Trigger.
- Sesuaikan skala dan posisi agar sesuai dengan bidang pandang musuh.
Langkah 3: Menulis Skrip Deteksi Musuh
Sekarang, mari kita membuat skrip untuk mendeteksi Pemain dalam kerucut penglihatan:
- Buat skrip C# yang disebut EnemyVision.
- Lampirkan skrip ke GameObject Musuh.
- Gunakan kode berikut:
using UnityEngine;
public class EnemyVision : MonoBehaviour
{
public bool playerDetected = false;
void OnTriggerEnter(Collider other)
{
if (other.CompareTag("Player"))
{
playerDetected = true;
Debug.Log("Player Detected!");
}
}
void OnTriggerExit(Collider other)
{
if (other.CompareTag("Player"))
{
playerDetected = false;
Debug.Log("Player Lost!");
}
}
}
Skrip ini memeriksa apakah Pemain memasuki atau keluar dari kerucut penglihatan. Pastikan GameObject Pemain memiliki tag Pemain.
Langkah 4: Menambahkan Visibilitas Pemain
Selanjutnya, mari terapkan mekanisme visibilitas untuk membuat deteksi lebih dinamis. Pemain akan lebih sulit dideteksi saat berjongkok atau bersembunyi:
- Buat skrip baru bernama PlayerVisibility.
- Lampirkan ke GameObject Pemain.
- Gunakan kode berikut:
using UnityEngine;
public class PlayerVisibility : MonoBehaviour
{
public float visibility = 1.0f; // Full visibility
void Update()
{
// Reduce visibility when crouching (e.g., pressing "C")
if (Input.GetKey(KeyCode.C))
{
visibility = 0.5f;
Debug.Log("Crouching: Reduced visibility!");
}
else
{
visibility = 1.0f; // Default visibility
}
}
}
Skrip ini menyesuaikan tingkat visibilitas Pemain berdasarkan tindakan mereka. Musuh nantinya dapat menggunakan nilai ini untuk memutuskan seberapa mudah Pemain dideteksi.
Langkah 5: Meningkatkan Deteksi Musuh
Sekarang, mari gabungkan visibilitas dengan deteksi. Ubah skrip EnemyVision sebagai berikut:
using UnityEngine;
public class EnemyVision : MonoBehaviour
{
public bool playerDetected = false;
void OnTriggerStay(Collider other)
{
if (other.CompareTag("Player"))
{
PlayerVisibility playerVisibility = other.GetComponent<PlayerVisibility>();
if (playerVisibility != null && playerVisibility.visibility > 0.75f)
{
playerDetected = true;
Debug.Log("Player Detected with high visibility!");
}
else
{
Debug.Log("Player not visible enough to detect.");
}
}
}
void OnTriggerExit(Collider other)
{
if (other.CompareTag("Player"))
{
playerDetected = false;
Debug.Log("Player Lost!");
}
}
}
Skrip ini menggunakan tingkat visibilitas Pemain untuk menentukan apakah mereka terdeteksi.
Langkah 6: Menguji Mekanika Siluman
Untuk menguji pengaturan Anda:
- Tekan tombol Putar di Editor Unity.
- Pindahkan Pemain ke kerucut penglihatan Musuh untuk memicu deteksi.
- Tekan tombol jongkok (misalnya, "C") untuk mengurangi visibilitas dan menguji bagaimana pengaruhnya terhadap deteksi.
Peningkatan Opsional
Berikut adalah beberapa ide untuk memperluas mekanisme siluman Anda:
- Deteksi Suara: Menambahkan mekanik di mana musuh mendeteksi Pemain berdasarkan suara yang mereka buat (misalnya, berlari).
- Tempat Persembunyian: Ciptakan tempat persembunyian di mana Pemain menjadi tidak terdeteksi.
- Musuh yang Berpatroli: Program musuh untuk berpatroli di sepanjang jalur yang ditentukan menggunakan sistem NavMesh Unity.
- Status Peringatan: Menambahkan tingkat peringatan untuk musuh (misalnya, mencurigakan, mencari, agresif).
Kesimpulan
Kami telah menerapkan mekanika siluman dasar di Unity, termasuk kerucut penglihatan dan tingkat visibilitas. Sistem ini dapat berfungsi sebagai dasar untuk permainan siluman yang lebih kompleks. Bereksperimenlah dengan fitur tambahan untuk menciptakan pengalaman siluman yang sepenuhnya mendalam untuk permainan Anda.