Crearea unui joc de vânătoare în Unity
În acest tutorial, vom parcurge procesul de creare a unui joc de vânătoare de bază în Unity. Acest joc va include elemente precum mișcarea jucătorului, IA animală, mecanica de tragere și un sistem de scor. Vom acoperi:
- Infiintarea proiectului si a mediului
- Crearea comenzilor pentru jucător
- Implementarea IA animală
- Adăugarea mecanicii de tragere
- Configurarea unui sistem de notare
Configurarea Proiectului
Să începem prin a crea un nou proiect Unity și să creăm mediul.
Crearea Proiectului
- Deschideți Unity și creați un nou proiect 3D.
- Denumiți-vă proiectul
HuntingGame
și faceți clic peCreate
. - În fereastra Proiect, creați foldere numite
Scripts
,Prefabs
șiMaterials
pentru a vă organiza activele.
Configurarea mediului
- În Ierarhie, faceți clic dreapta și selectați
3D Object > Terrain
pentru a crea un teren. - Personalizați terenul utilizând
Terrain Tools
pentru a picta texturi, adăuga copaci și plasați iarbă sau alte detalii. - Adăugați câteva obiecte 3D, cum ar fi pietre și copaci, pentru a face mediul mai realist.
Crearea comenzilor pentru jucător
În continuare, vom crea personajul jucătorului și vom implementa controale de mișcare bazate pe fizică.
Personaj jucător
- În Ierarhie, faceți clic dreapta și selectați
3D Object > Capsule
pentru a crea un personaj jucător. - Redenumiți capsula în
Player
și poziționați-o deasupra terenului. - Adăugați o componentă
Rigidbody
la obiectulPlayer
pentru mișcarea bazată pe fizică. - Adăugați o
Cameră
ca copil al obiectuluiPlayer
pentru a servi drept punct de vedere al jucătorului.
Script de mișcare a jucătorului
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);
}
}
- Creați un nou script C# numit
PlayerMovement.cs
în folderulScripts
. - Atașați scriptul
PlayerMovement
la obiectulPlayer
.
Implementarea Animal AI
Vom crea o IA simplă pentru animale care să cutreiere mediul înconjurător și să reacționeze la jucător.
Animal prefabricat
- Importați sau creați un model 3D pentru animal (de exemplu, un căprior).
- Trageți modelul în scenă și poziționați-l pe teren.
- Faceți clic dreapta pe model în Ierarhie și selectați
Creare Empty
pentru a crea un obiect părinte. Numele-iCerbul
. - Trageți modelul 3D în obiectul
Deer
și resetați-i transformarea. - Salvați obiectul
Deer
ca prefabricat trăgându-l în folderulPrefabs
.
Animal AI Script
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);
}
}
}
- Creați un nou script C# numit
AnimalAI.cs
în folderulScripts
. - Atașați scriptul
AnimalAI
la prefabricatulDeer
. - Adăugați o componentă
NavMeshAgent
la prefabricatulDeer
. - Configurați puncte de referință în scenă creând GameObjects goale și poziționându-le după cum doriți. Atribuiți aceste puncte de referință matricei
waypoints
în scriptulAnimalAI
.
Adăugarea mecanicii de fotografiere
Vom implementa capacitatea jucătorului de a trage în animale.
Script de filmare
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);
}
}
}
- Creați un nou script C# numit
PlayerShooting.cs
în folderulScripts
. - Atașați scriptul
PlayerShooting
la obiectulPlayer
. - Creați un efect de impact (de exemplu, un sistem de particule) și atribuiți-l câmpului
impactEffect
din script.
Configurarea unui sistem de notare
Vom adăuga un sistem simplu de punctare pentru a urmări vânătoarele de succes ale jucătorului.
Score Manager Script
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;
}
}
- Creați un nou script C# numit
ScoreManager.cs
în folderulScripts
. - Atașați scriptul
ScoreManager
la un nou GameObject gol numitGameManager
. - Creați un element Text UI pentru afișarea scorului și atribuiți-l câmpului
scoreText
din scriptulScoreManager
.
Actualizarea scriptului de fotografiere pentru a urmări scorul
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);
}
}
Concluzie
Am creat un joc de vânătoare de bază în Unity. Am configurat proiectul și mediul, am creat controale pentru jucători cu mișcare bazată pe fizică, am implementat IA pentru animale, am adăugat mecanisme de tragere și am configurat un sistem de punctare. Aceste cunoștințe de bază pot fi extinse pentru a include comportamente mai complexe, animale suplimentare și mecanici de joc rafinate pentru a vă îmbunătăți jocul de vânătoare.