Erstellen eines Jagdspiels in Unity
In diesem Tutorial führen wir Sie durch den Prozess der Erstellung eines einfachen Jagdspiels in Unity. Dieses Spiel wird Elemente wie Spielerbewegung, Tier-KI, Schießmechanik und ein Punktesystem enthalten. Wir werden Folgendes behandeln:
- Einrichten des Projekts und der Umgebung
- Erstellen von Player-Steuerelementen
- Implementierung von künstlicher Intelligenz bei Tieren
- Hinzufügen von Schussmechaniken
- Einrichten eines Punktesystems
Einrichten des Projekts
Beginnen wir mit dem Einrichten eines neuen Unity-Projekts und dem Erstellen der Umgebung.
Erstellen des Projekts
- Öffnen Sie Unity und erstellen Sie ein neues 3D-Projekt.
- Nennen Sie Ihr Projekt
HuntingGame
und klicken Sie aufErstellen
. - Erstellen Sie im Projektfenster Ordner mit den Namen
Scripts
,Prefabs
undMaterials
, um Ihre Assets zu organisieren.
Einrichten der Umgebung
- Klicken Sie in der Hierarchie mit der rechten Maustaste und wählen Sie
3D-Objekt > Terrain
, um ein Terrain zu erstellen. - Passen Sie das Gelände an, indem Sie mit den
Geländewerkzeugen
Texturen malen, Bäume hinzufügen und Gras oder andere Details platzieren. - Fügen Sie einige 3D-Objekte wie Felsen und Bäume hinzu, um die Umgebung realistischer zu gestalten.
Erstellen von Player-Steuerelementen
Als Nächstes erstellen wir den Spielercharakter und implementieren physikbasierte Bewegungssteuerungen.
Spielercharakter
- Klicken Sie in der Hierarchie mit der rechten Maustaste und wählen Sie
3D-Objekt > Kapsel
, um einen Spielercharakter zu erstellen. - Benennen Sie die Kapsel in
Player
um und positionieren Sie sie über dem Gelände. - Fügen Sie dem
Player
-Objekt eineRigidbody
-Komponente für physikbasierte Bewegung hinzu. - Fügen Sie eine
Kamera
als untergeordnetes Objekt desSpieler
-Objekts hinzu, die als Sichtpunkt des Spielers dient.
Spielerbewegungsskript
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);
}
}
- Erstellen Sie ein neues C#-Skript mit dem Namen
PlayerMovement.cs
im OrdnerScripts
. - Hängen Sie das Skript
PlayerMovement
an das ObjektPlayer
an.
Implementierung von Animal AI
Wir erstellen eine einfache Tier-KI, die durch die Umgebung streift und auf den Spieler reagiert.
Tier-Fertigteil
- Importieren oder erstellen Sie ein 3D-Modell des Tieres (z. B. eines Hirsches).
- Ziehen Sie das Modell in die Szene und positionieren Sie es auf dem Gelände.
- Klicken Sie mit der rechten Maustaste auf das Modell in der Hierarchie und wählen Sie
Leer erstellen
, um ein übergeordnetes Objekt zu erstellen. Nennen Sie esHirsch
. - Ziehen Sie das 3D-Modell in das Objekt
Hirsch
und setzen Sie seine Transformation zurück. - Speichern Sie das Objekt
Deer
als Prefab, indem Sie es in den OrdnerPrefabs
ziehen.
Tier-KI-Skript
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);
}
}
}
- Erstellen Sie ein neues C#-Skript mit dem Namen
AnimalAI.cs
im OrdnerScripts
. - Fügen Sie das Skript
AnimalAI
an das PrefabDeer
an. - Fügen Sie dem
Deer
-Prefab eineNavMeshAgent
-Komponente hinzu. - Richten Sie Wegpunkte in der Szene ein, indem Sie leere GameObjects erstellen und diese nach Wunsch positionieren. Weisen Sie diese Wegpunkte dem Array
waypoints
im SkriptAnimalAI
zu.
Hinzufügen von Schussmechaniken
Wir werden die Möglichkeit für den Spieler implementieren, auf Tiere zu schießen.
Drehbuch
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);
}
}
}
- Erstellen Sie ein neues C#-Skript mit dem Namen
PlayerShooting.cs
im OrdnerScripts
. - Hängen Sie das Skript
PlayerShooting
an das ObjektPlayer
an. - Erstellen Sie einen Impact-Effekt (z. B. ein Partikelsystem) und weisen Sie ihn im Skript dem Feld
impactEffect
zu.
Einrichten eines Punktesystems
Wir werden ein einfaches Punktesystem hinzufügen, um die erfolgreichen Jagden des Spielers zu verfolgen.
Score Manager-Skript
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;
}
}
- Erstellen Sie ein neues C#-Skript mit dem Namen
ScoreManager.cs
im OrdnerScripts
. - Fügen Sie das Skript
ScoreManager
an ein neues leeres GameObject mit dem NamenGameManager
an. - Erstellen Sie ein UI-Textelement zur Anzeige der Punktzahl und weisen Sie es dem Feld
scoreText
im SkriptScoreManager
zu.
Aktualisieren des Drehbuchs zur Verfolgung der Punktzahl
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);
}
}
Abschluss
Wir haben in Unity ein einfaches Jagdspiel entwickelt. Wir haben das Projekt und die Umgebung eingerichtet, Spielersteuerungen mit physikbasierten Bewegungen erstellt, Tier-KI implementiert, Schießmechaniken hinzugefügt und ein Punktesystem eingerichtet. Dieses grundlegende Wissen kann erweitert werden, um komplexere Verhaltensweisen, zusätzliche Tiere und verfeinerte Spielmechaniken einzubeziehen und so Ihr Jagdspiel zu verbessern.