Criando um jogo de caça no Unity
Neste tutorial, vamos percorrer o processo de criação de um jogo de caça básico em Unity. Este jogo incluirá elementos como movimento do jogador, IA animal, mecânica de tiro e um sistema de pontuação. Abordaremos:
- Configurando o projeto e o ambiente
- Criando controles do player
- Implementando IA animal
- Adicionando mecânica de tiro
- Configurando um sistema de pontuação
Configurando o Projeto
Vamos começar configurando um novo projeto Unity e criando o ambiente.
Criando o Projeto
- Abra Unity e crie um novo projeto 3D.
- Nomeie seu projeto como
HuntingGame
e clique emCriar
. - Na janela Projeto, crie pastas chamadas
Scripts
,Prefabs
eMaterials
para organizar seus ativos.
Configurando o ambiente
- Na Hierarquia, clique com o botão direito e selecione
Objeto 3D > Terreno
para criar um terreno. - Personalize o terreno usando as
Ferramentas de Terreno
para pintar texturas, adicionar árvores e colocar grama ou outros detalhes. - Adicione alguns objetos 3D, como pedras e árvores, para tornar o ambiente mais realista.
Criando controles do jogador
Em seguida, criaremos o personagem do jogador e implementaremos controles de movimento baseados em física.
Personagem do jogador
- Na Hierarquia, clique com o botão direito e selecione
Objeto 3D > Cápsula
para criar um personagem do jogador. - Renomeie a cápsula para
Jogador
e posicione-a acima do terreno. - Adicione um componente
Rigidbody
ao objetoPlayer
para movimento baseado em física. - Adicione uma
Câmera
como filha do objetoJogador
para servir como ponto de vista do jogador.
Script de movimento do jogador
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);
}
}
- Crie um novo script C# chamado
PlayerMovement.cs
na pastaScripts
. - Anexe o script
PlayerMovement
ao objetoPlayer
.
Implementando IA Animal
Criaremos uma IA animal simples para vagar pelo ambiente e reagir ao jogador.
Pré-fabricado de animais
- Importe ou crie um modelo 3D para o animal (por exemplo, um cervo).
- Arraste o modelo para a cena e posicione-o no terreno.
- Clique com o botão direito no modelo na Hierarquia e selecione
Create Empty
para criar um objeto pai. Nomeie-o comoDeer
. - Arraste o modelo 3D para o objeto
Deer
e redefina sua transformação. - Salve o objeto
Deer
como um prefab arrastando-o para a pastaPrefabs
.
Script de IA animal
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);
}
}
}
- Crie um novo script C# chamado
AnimalAI.cs
na pastaScripts
. - Anexe o script
AnimalAI
ao prefabDeer
. - Adicione um componente
NavMeshAgent
ao prefabDeer
. - Configure waypoints na cena criando GameObjects vazios e posicionando-os conforme desejado. Atribua esses waypoints ao array
waypoints
no scriptAnimalAI
.
Adicionando Mecânica de Tiro
Implementaremos a capacidade do jogador de atirar em animais.
Roteiro de filmagem
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);
}
}
}
- Crie um novo script C# chamado
PlayerShooting.cs
na pastaScripts
. - Anexe o script
PlayerShooting
ao objetoPlayer
. - Crie um efeito de impacto (por exemplo, um sistema de partículas) e atribua-o ao campo
impactEffect
no script.
Configurando um sistema de pontuação
Adicionaremos um sistema de pontuação simples para monitorar as caçadas bem-sucedidas do jogador.
Script do Gerenciador de Pontuação
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;
}
}
- Crie um novo script C# chamado
ScoreManager.cs
na pastaScripts
. - Anexe o script
ScoreManager
a um novo GameObject vazio chamadoGameManager
. - Crie um elemento de texto da interface do usuário para exibir a pontuação e atribua-o ao campo
scoreText
no scriptScoreManager
.
Atualizando o roteiro de filmagem para acompanhar a pontuação
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);
}
}
Conclusão
Criamos um jogo de caça básico em Unity. Configuramos o projeto e o ambiente, criamos controles de jogador com movimento baseado em física, implementamos IA animal, adicionamos mecânica de tiro e configuramos um sistema de pontuação. Esse conhecimento fundamental pode ser expandido para incluir comportamentos mais complexos, animais adicionais e mecânica de jogo refinada para aprimorar seu jogo de caça.