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șiMaterialspentru a vă organiza activele.
Configurarea mediului
- În Ierarhie, faceți clic dreapta și selectați
3D Object > Terrainpentru a crea un teren. - Personalizați terenul utilizând
Terrain Toolspentru 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 > Capsulepentru a crea un personaj jucător. - Redenumiți capsula în
Playerși poziționați-o deasupra terenului. - Adăugați o componentă
Rigidbodyla obiectulPlayerpentru mișcarea bazată pe fizică. - Adăugați o
Camerăca copil al obiectuluiPlayerpentru 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
PlayerMovementla 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 Emptypentru a crea un obiect părinte. Numele-iCerbul. - Trageți modelul 3D în obiectul
Deerși resetați-i transformarea. - Salvați obiectul
Deerca 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
AnimalAIla prefabricatulDeer. - Adăugați o componentă
NavMeshAgentla 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
PlayerShootingla obiectulPlayer. - Creați un efect de impact (de exemplu, un sistem de particule) și atribuiți-l câmpului
impactEffectdin 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
ScoreManagerla un nou GameObject gol numitGameManager. - Creați un element Text UI pentru afișarea scorului și atribuiți-l câmpului
scoreTextdin 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.