Cara Menembakkan Tembakan di Unity

Dalam tutorial ini, kita akan membahas langkah demi langkah cara melepaskan tembakan di Unity. Anda akan mempelajari cara membuat proyektil dasar yang bergerak maju dan berinteraksi dengan objek lain. Pada akhirnya, Anda akan memiliki skrip yang dapat dilampirkan ke GameObject untuk mensimulasikan penembakan dalam permainan.

Menyiapkan Adegan

Sebelum kita mulai membuat kode, mari kita siapkan dulu skenario untuk membuat proyektil. Berikut langkah-langkah untuk memulainya:

  1. Buat proyek Unity baru atau buka proyek yang sudah ada.
  2. Buat objek 3D (misalnya, kubus atau bola) dalam adegan Anda, yang akan berperan sebagai pemain atau objek yang melepaskan tembakan.
  3. Buat objek 3D lain (misalnya, bola yang lebih kecil) untuk bertindak sebagai proyektil. Ini akan terwujud saat tembakan dilepaskan.
  4. Atur objek Anda dengan memberinya nama yang bermakna, seperti "Player" dan "ProjectilePrefab".

Membuat Naskah Pengambilan Gambar

Sekarang setelah kita memiliki adegan dasar, mari buat skrip yang akan menangani penembakan. Kita akan memberi nama skrip Shot.cs dan menempelkannya ke objek pemain. Skrip ini akan memunculkan proyektil dan menerapkan gaya maju untuk mensimulasikan penembakan.

Ikuti langkah-langkah berikut untuk membuat skrip:

  1. Di editor Unity, klik kanan di jendela Proyek dan pilih Buat > Skrip C#. Beri nama skrip Shot.cs.
  2. Klik dua kali file Shot.cs untuk membukanya di editor kode Anda.
  3. Ganti kode default dengan skrip berikut:
using UnityEngine;

public class Shot : MonoBehaviour
{
    public GameObject projectilePrefab;  // The prefab of the projectile to shoot
    public Transform firePoint;          // The point where the projectile will be fired from
    public float projectileSpeed = 20f;  // Speed of the projectile

    void Update()
    {
        // Check if the player presses the fire button (default is left mouse button or spacebar)
        if (Input.GetButtonDown("Fire1"))
        {
            FireShot();
        }
    }

    void FireShot()
    {
        // Instantiate the projectile at the fire point's position and rotation
        GameObject projectile = Instantiate(projectilePrefab, firePoint.position, firePoint.rotation);

        // Get the Rigidbody component of the projectile to apply physics
        Rigidbody rb = projectile.GetComponent();

        if (rb != null)
        {
            // Apply force to the projectile to make it move forward
            rb.velocity = firePoint.forward * projectileSpeed;
        }
    }
}

Skrip ini melakukan tugas-tugas berikut:

  • Menentukan projectilePrefab publik untuk menampung objek proyektil.
  • Menggunakan firePoint untuk menentukan dari mana tembakan berasal.
  • Menggunakan projectileSpeed untuk mengendalikan kecepatan proyektil.
  • Memeriksa masukan pemain menggunakan Input.GetButtonDown("Fire1"), yang mendengarkan tindakan "Fire1" (biasanya dipetakan ke tombol kiri mouse atau bilah spasi).
  • Membuat proyektil di firePoint dan menerapkan kecepatan maju padanya.

Menetapkan Skrip di Unity

Sekarang setelah skripnya siap, saatnya untuk menetapkannya ke objek pemain dan mengatur referensinya:

  1. Pilih GameObject "Player" dalam adegan.
  2. Seret skrip Shot.cs ke "Player" untuk melampirkannya.
  3. Di jendela Inspektur, Anda akan melihat bidang skrip. Tetapkan prefab proyektil (misalnya, bola kecil yang Anda buat) ke slot ProjectilePrefab.
  4. Buat GameObject kosong di bawah objek pemain dan beri nama "FirePoint". Posisikan di depan pemain atau di mana pun Anda ingin proyektil muncul.
  5. Tarik objek "FirePoint" ke kolom FirePoint dalam skrip.

Menguji Tembakan

Untuk menguji fungsi penembakan, tekan tombol Putar di Unity dan tekan tombol tembak (tombol kiri tetikus atau spasi adalah yang default). Anda akan melihat proyektil muncul dan bergerak maju saat Anda menekan tombol. Anda dapat mengubah kecepatan atau tampilan proyektil agar lebih sesuai dengan kebutuhan Anda.

Pertanyaan yang Sering Diajukan

Bagaimana cara menghancurkan proyektil setelah ditembakkan?

Untuk mencegah proyektil Anda bertahan selamanya, Anda dapat menghancurkannya setelah jangka waktu tertentu. Dalam metode FireShot, setelah membuat proyektil, Anda dapat menambahkan:

Destroy(projectile, 5f); // Destroys the projectile after 5 seconds

Bagaimana cara menambahkan efek suara atau animasi ke dalam bidikan?

Anda dapat menambahkan efek suara dengan menggunakan komponen AudioSource. Cukup tambahkan ke pemutar dan putar suara dengan metode FireShot:

AudioSource audioSource = GetComponent();
audioSource.Play();

Untuk animasi, Anda dapat memicu animasi menggunakan komponen Animator atau dengan mengaktifkan/menonaktifkan status GameObject tertentu dalam metode FireShot.

Bagaimana cara membuat proyektil berinteraksi dengan objek lain?

Agar proyektil berinteraksi dengan objek lain, pastikan proyektil memiliki komponen Rigidbody dan Collider. Anda kemudian dapat menulis skrip untuk menangani deteksi tabrakan menggunakan OnCollisionEnter atau OnTriggerEnter:

void OnCollisionEnter(Collision collision)
{
    if (collision.gameObject.CompareTag("Enemy"))
    {
        Destroy(collision.gameObject); // Destroy enemy on collision
        Destroy(gameObject);           // Destroy the projectile
    }
}

Kesimpulan

Semoga tutorial ini membantu Anda mempelajari cara melepaskan tembakan di Unity dengan membuat proyektil, menerapkan gaya padanya, dan menangani deteksi tabrakan dasar. Teknik ini dapat dikembangkan untuk interaksi yang lebih kompleks, seperti menambahkan efek, suara, atau fisika tingkat lanjut.