Tutorial Serangan Jarak Dekat 2D untuk Unity
Mesin Unity menyediakan platform ekstensif untuk membuat game 2D dan 3D. Salah satu elemen dasar dalam banyak game aksi adalah serangan jarak dekat. Dalam lingkungan 2D, serangan seperti itu sering kali terdiri dari karakter yang mengayunkan senjata atau melontarkan pukulan, dan dapat dilakukan dengan menggunakan kombinasi animasi Unity, fisika, dan alat skrip.
Prasyarat
- Unity Mesin dipasang dan dikonfigurasi.
- Keakraban dasar dengan antarmuka Unity dan ruang 2D.
1. Menyiapkan Proyek dan Adegan
- Buat proyek 2D Unity baru (jika belum).
- Impor atau buat sprite karakter. Tempatkan di tempat kejadian.
2. Menyiapkan Animasi Serangan Jarak Dekat
- Di jendela Proyek, klik kanan dan buat "Animator Controller". Beri nama "CharacterAnimator".
- Tetapkan animator ini ke karakter dengan memilih karakter dan menyeret animator ke komponen "Animator".
- Buka jendela Animasi. Dengan karakter yang dipilih, buat animasi baru bernama "MeleeAttack".
- Untuk mempermudah, anggap saja serangan ini adalah pukulan cepat. Animasikan sprite untuk menyimulasikan tindakan ini.
3. Membuat Hitbox Serangan
- Tambahkan GameObject kosong sebagai anak ke karakter. Ini akan bertindak sebagai kotak serangan untuk serangan tersebut.
- Lampirkan a "Box Collider 2D" ke GameObject yang kosong. Sesuaikan ukuran dan posisinya agar sesuai dengan tempat karakter akan memukul selama pukulan.
- Nonaktifkan hitbox dengan menghapus centang pada kotak "Active". Ini memastikannya hanya aktif selama animasi serangan.
4. Membuat Skrip Logika Serangan
- Buat skrip baru, beri nama "MeleeAttack" lalu tempel kode di bawah ini di dalamnya:
'MeleeAttack.cs'
using UnityEngine;
public class MeleeAttack : MonoBehaviour
{
private Animator animator;
private BoxCollider2D hitbox;
private void Start()
{
animator = GetComponent<Animator>();
hitbox = transform.Find("HitboxGameObjectName").GetComponent<BoxCollider2D>();
}
private void Update()
{
if (Input.GetKeyDown(KeyCode.Space)) // Attack on Space key press.
{
animator.SetTrigger("MeleeAttack");
Invoke("ActivateHitbox", 0.2f); // Activate hitbox after 0.2 seconds.
Invoke("DeactivateHitbox", 0.4f); // Deactivate hitbox after 0.4 seconds.
}
}
void ActivateHitbox()
{
hitbox.gameObject.SetActive(true);
}
void DeactivateHitbox()
{
hitbox.gameObject.SetActive(false);
}
}
- Lampirkan skrip "MeleeAttack" ke karakter utama.
- Sesuaikan waktu aktivasi dan penonaktifan hitbox berdasarkan animasi.
- Tetapkan penumbuk hitbox ke Hitbox variabel.
5. Menangani Tabrakan
- Ubah tag objek permainan musuh menjadi "Enemy".
- Buat skrip baru, beri nama "Hitbox" lalu tempel kode di bawah ini di dalamnya:
'Hitbox.cs'
using UnityEngine;
public class Hitbox : MonoBehaviour
{
private void OnTriggerEnter2D(Collider2D collision)
{
if (collision.CompareTag("Enemy"))
{
// Damage or destroy the enemy.
Destroy(collision.gameObject);
}
}
}
- Lampirkan script "Hitbox" ke objek hitbox.
Pertanyaan yang Harus Ditangani:
- Bagaimana hitbox mengetahui kapan harus diaktifkan selama animasi?: Hitbox diaktifkan oleh fungsi 'Invoke' di skrip 'MeleeAttack.cs'. Waktunya dapat disesuaikan berdasarkan frame di mana serangan seharusnya mendarat.
- Apa yang terjadi jika hitbox bertabrakan dengan beberapa musuh sekaligus?: Dengan menggunakan script 'Hitbox' yang telah disediakan, setiap musuh dengan tag "Enemy" yang bertabrakan dengan hitbox akan dihancurkan. Sesuaikan skrip untuk mengelola kerusakan atau efek lainnya.
- Bisakah tombol serang diubah dari tombol Spasi?: Ya, pada skrip 'MeleeAttack.cs', baris if ('Input.GetKeyDown(KeyCode.Space)') memeriksa penekanan tombol Spasi. Ganti 'KeyCode.Space' dengan nilai 'KeyCode' lainnya untuk mengubah tombol serangan.
Kesimpulan
Panduan ini memberikan kerangka dasar untuk menerapkan serangan jarak dekat 2D di Unity. Peningkatan seperti menambahkan efek suara, umpan balik visual, dan menyempurnakan logika deteksi serangan dapat lebih meningkatkan pengalaman serangan jarak dekat.