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
- Buka Unity dan buat proyek 3D baru.
- Beri nama proyek Anda
HuntingGame
dan klikBuat
. - Di jendela Proyek, buat folder bernama
Scripts
,Prefabs
, danMaterials
untuk mengatur aset Anda.
Menyiapkan Lingkungan
- Dalam Hirarki, klik kanan dan pilih
Objek 3D > Medan
untuk membuat medan. - Sesuaikan medan dengan menggunakan
Alat Medan
untuk melukis tekstur, menambahkan pohon, dan menempatkan rumput atau detail lainnya. - 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
- Dalam Hirarki, klik kanan dan pilih
Objek 3D > Kapsul
untuk membuat karakter pemain. - Ubah nama kapsul menjadi
Pemain
dan posisikan di atas medan. - Tambahkan komponen
Rigidbody
ke objekPlayer
untuk pergerakan berbasis fisika. - Tambahkan
Camera
sebagai anak objekPlayer
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);
}
}
- Buat skrip C# baru bernama
PlayerMovement.cs
di folderScripts
. - Lampirkan skrip
PlayerMovement
ke objekPlayer
.
Menerapkan AI Hewan
Kami akan membuat AI hewan sederhana untuk menjelajahi lingkungan dan bereaksi terhadap pemain.
Hewan Prefab
- Impor atau buat model 3D untuk hewan (misalnya, rusa).
- Tarik model ke dalam pemandangan dan posisikan di medan.
- Klik kanan model di Hierarchy dan pilih
Create Empty
untuk membuat objek induk. Beri namaDeer
. - Tarik model 3D ke objek
Deer
dan atur ulang transformasinya. - Simpan objek
Deer
sebagai prefab dengan menyeretnya ke folderPrefabs
.
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);
}
}
}
- Buat skrip C# baru bernama
AnimalAI.cs
di folderScripts
. - Lampirkan skrip
AnimalAI
ke prefabDeer
. - Tambahkan komponen
NavMeshAgent
ke prefabDeer
. - Siapkan titik arah dalam adegan dengan membuat GameObject kosong dan memposisikannya sesuai keinginan. Tetapkan titik arah ini ke array
waypoints
dalam skripAnimalAI
.
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);
}
}
}
- Buat skrip C# baru bernama
PlayerShooting.cs
di folderScripts
. - Lampirkan skrip
PlayerShooting
ke objekPlayer
. - 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;
}
}
- Buat skrip C# baru bernama
ScoreManager.cs
di folderScripts
. - Lampirkan skrip
ScoreManager
ke GameObject kosong baru bernamaGameManager
. - Buat elemen Teks UI untuk menampilkan skor dan tetapkan ke bidang
scoreText
dalam skripScoreManager
.
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.