Membuat Game Berburu di Unity

Dalam tutorial ini, kita akan membahas proses pembuatan game berburu dasar di Unity. Game ini akan mencakup elemen-elemen seperti pergerakan pemain, AI hewan, mekanika menembak, dan sistem penilaian. Kita akan membahas:

  • Menyiapkan proyek dan lingkungan
  • Membuat kontrol pemain
  • Menerapkan AI pada Hewan
  • Menambahkan mekanisme penembakan
  • Menyiapkan sistem penilaian

Menyiapkan Proyek

Mari kita mulai dengan menyiapkan proyek Unity baru dan membuat lingkungan.

Membuat Proyek

  1. Buka Unity dan buat proyek 3D baru.
  2. Beri nama proyek Anda HuntingGame dan klik Buat.
  3. Di jendela Proyek, buat folder bernama Scripts, Prefabs, dan Materials untuk mengatur aset Anda.

Menyiapkan Lingkungan

  1. Dalam Hirarki, klik kanan dan pilih Objek 3D > Medan untuk membuat medan.
  2. Sesuaikan medan dengan menggunakan Alat Medan untuk melukis tekstur, menambahkan pohon, dan menempatkan rumput atau detail lainnya.
  3. Tambahkan beberapa objek 3D seperti batu dan pohon untuk membuat lingkungan lebih realistis.

Membuat Kontrol Pemain

Selanjutnya, kita akan membuat karakter pemain dan menerapkan kontrol gerakan berbasis fisika.

Karakter Pemain

  1. Dalam Hirarki, klik kanan dan pilih Objek 3D > Kapsul untuk membuat karakter pemain.
  2. Ubah nama kapsul menjadi Pemain dan posisikan di atas medan.
  3. Tambahkan komponen Rigidbody ke objek Player untuk pergerakan berbasis fisika.
  4. Tambahkan Camera sebagai anak objek Player untuk berfungsi sebagai sudut pandang pemain.

Skrip Pergerakan Pemain

using UnityEngine;

public class PlayerMovement : MonoBehaviour
{
    public float moveSpeed = 5f;
    public float rotationSpeed = 100f;
    private Rigidbody rb;

    void Start()
    {
        rb = GetComponent();
        rb.freezeRotation = true;
    }

    void FixedUpdate()
    {
        float moveHorizontal = Input.GetAxis("Horizontal");
        float moveVertical = Input.GetAxis("Vertical");

        Vector3 movement = transform.forward * moveVertical * moveSpeed * Time.deltaTime;
        rb.MovePosition(rb.position + movement);

        float rotation = Input.GetAxis("Mouse X") * rotationSpeed * Time.deltaTime;
        Quaternion turnRotation = Quaternion.Euler(0f, rotation, 0f);
        rb.MoveRotation(rb.rotation * turnRotation);
    }
}
  1. Buat skrip C# baru bernama PlayerMovement.cs di folder Scripts.
  2. Lampirkan skrip PlayerMovement ke objek Player.

Menerapkan AI Hewan

Kami akan membuat AI hewan sederhana untuk menjelajahi lingkungan dan bereaksi terhadap pemain.

Hewan Prefab

  1. Impor atau buat model 3D untuk hewan (misalnya, rusa).
  2. Tarik model ke dalam pemandangan dan posisikan di medan.
  3. Klik kanan model di Hierarchy dan pilih Create Empty untuk membuat objek induk. Beri nama Deer.
  4. Tarik model 3D ke objek Deer dan atur ulang transformasinya.
  5. Simpan objek Deer sebagai prefab dengan menyeretnya ke folder Prefabs.

Skrip AI Hewan

using UnityEngine;
using UnityEngine.AI;

public class AnimalAI : MonoBehaviour
{
    public Transform[] waypoints;
    private NavMeshAgent agent;
    private int currentWaypoint = 0;

    void Start()
    {
        agent = GetComponent();
        agent.SetDestination(waypoints[currentWaypoint].position);
    }

    void Update()
    {
        if (agent.remainingDistance < agent.stoppingDistance)
        {
            currentWaypoint = (currentWaypoint + 1) % waypoints.Length;
            agent.SetDestination(waypoints[currentWaypoint].position);
        }
    }
}
  1. Buat skrip C# baru bernama AnimalAI.cs di folder Scripts.
  2. Lampirkan skrip AnimalAI ke prefab Deer.
  3. Tambahkan komponen NavMeshAgent ke prefab Deer.
  4. Siapkan titik arah dalam adegan dengan membuat GameObject kosong dan memposisikannya sesuai keinginan. Tetapkan titik arah ini ke array waypoints dalam skrip AnimalAI.

Menambahkan Mekanika Menembak

Kami akan menerapkan kemampuan bagi pemain untuk menembak binatang.

Naskah Syuting

using UnityEngine;

public class PlayerShooting : MonoBehaviour
{
    public Camera playerCamera;
    public float range = 100f;
    public GameObject impactEffect;

    void Update()
    {
        if (Input.GetButtonDown("Fire1"))
        {
            Shoot();
        }
    }

    void Shoot()
    {
        RaycastHit hit;
        if (Physics.Raycast(playerCamera.transform.position, playerCamera.transform.forward, out hit, range))
        {
            AnimalAI animal = hit.transform.GetComponent();
            if (animal != null)
            {
                Destroy(hit.transform.gameObject);
            }

            GameObject impactGO = Instantiate(impactEffect, hit.point, Quaternion.LookRotation(hit.normal));
            Destroy(impactGO, 2f);
        }
    }
}
  1. Buat skrip C# baru bernama PlayerShooting.cs di folder Scripts.
  2. Lampirkan skrip PlayerShooting ke objek Player.
  3. Buat efek dampak (misalnya, sistem partikel) dan tetapkan ke bidang impactEffect dalam skrip.

Menyiapkan Sistem Penilaian

Kami akan menambahkan sistem penilaian sederhana untuk melacak perburuan pemain yang berhasil.

Skrip Pengelola Skor

using UnityEngine;
using UnityEngine.UI;

public class ScoreManager : MonoBehaviour
{
    public static int score = 0;
    public Text scoreText;

    void Update()
    {
        scoreText.text = "Score: " + score.ToString();
    }

    public static void AddScore(int points)
    {
        score += points;
    }
}
  1. Buat skrip C# baru bernama ScoreManager.cs di folder Scripts.
  2. Lampirkan skrip ScoreManager ke GameObject kosong baru bernama GameManager.
  3. Buat elemen Teks UI untuk menampilkan skor dan tetapkan ke bidang scoreText dalam skrip ScoreManager.

Memperbarui Naskah Syuting untuk Melacak Skor

void Shoot()
{
    RaycastHit hit;
    if (Physics.Raycast(playerCamera.transform.position, playerCamera.transform.forward, out hit, range))
    {
        AnimalAI animal = hit.transform.GetComponent();
        if (animal != null)
        {
            Destroy(hit.transform.gameObject);
            ScoreManager.AddScore(10);
        }

        GameObject impactGO = Instantiate(impactEffect, hit.point, Quaternion.LookRotation(hit.normal));
        Destroy(impactGO, 2f);
    }
}

Kesimpulan

Kami telah membuat game berburu dasar di Unity. Kami menyiapkan proyek dan lingkungan, membuat kontrol pemain dengan gerakan berbasis fisika, menerapkan AI hewan, menambahkan mekanisme menembak, dan menyiapkan sistem penilaian. Pengetahuan dasar ini dapat diperluas untuk mencakup perilaku yang lebih kompleks, hewan tambahan, dan mekanisme permainan yang disempurnakan untuk meningkatkan permainan berburu Anda.