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

  1. Öffnen Sie Unity und erstellen Sie ein neues 3D-Projekt.
  2. Nennen Sie Ihr Projekt HuntingGame und klicken Sie auf Erstellen.
  3. Erstellen Sie im Projektfenster Ordner mit den Namen Scripts, Prefabs und Materials, um Ihre Assets zu organisieren.

Einrichten der Umgebung

  1. Klicken Sie in der Hierarchie mit der rechten Maustaste und wählen Sie 3D-Objekt > Terrain, um ein Terrain zu erstellen.
  2. Passen Sie das Gelände an, indem Sie mit den Geländewerkzeugen Texturen malen, Bäume hinzufügen und Gras oder andere Details platzieren.
  3. 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

  1. Klicken Sie in der Hierarchie mit der rechten Maustaste und wählen Sie 3D-Objekt > Kapsel, um einen Spielercharakter zu erstellen.
  2. Benennen Sie die Kapsel in Player um und positionieren Sie sie über dem Gelände.
  3. Fügen Sie dem Player-Objekt eine Rigidbody-Komponente für physikbasierte Bewegung hinzu.
  4. Fügen Sie eine Kamera als untergeordnetes Objekt des Spieler-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);
    }
}
  1. Erstellen Sie ein neues C#-Skript mit dem Namen PlayerMovement.cs im Ordner Scripts.
  2. Hängen Sie das Skript PlayerMovement an das Objekt Player an.

Implementierung von Animal AI

Wir erstellen eine einfache Tier-KI, die durch die Umgebung streift und auf den Spieler reagiert.

Tier-Fertigteil

  1. Importieren oder erstellen Sie ein 3D-Modell des Tieres (z. B. eines Hirsches).
  2. Ziehen Sie das Modell in die Szene und positionieren Sie es auf dem Gelände.
  3. 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 es Hirsch.
  4. Ziehen Sie das 3D-Modell in das Objekt Hirsch und setzen Sie seine Transformation zurück.
  5. Speichern Sie das Objekt Deer als Prefab, indem Sie es in den Ordner Prefabs 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);
        }
    }
}
  1. Erstellen Sie ein neues C#-Skript mit dem Namen AnimalAI.cs im Ordner Scripts.
  2. Fügen Sie das Skript AnimalAI an das Prefab Deer an.
  3. Fügen Sie dem Deer-Prefab eine NavMeshAgent-Komponente hinzu.
  4. 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 Skript AnimalAI 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);
        }
    }
}
  1. Erstellen Sie ein neues C#-Skript mit dem Namen PlayerShooting.cs im Ordner Scripts.
  2. Hängen Sie das Skript PlayerShooting an das Objekt Player an.
  3. 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;
    }
}
  1. Erstellen Sie ein neues C#-Skript mit dem Namen ScoreManager.cs im Ordner Scripts.
  2. Fügen Sie das Skript ScoreManager an ein neues leeres GameObject mit dem Namen GameManager an.
  3. Erstellen Sie ein UI-Textelement zur Anzeige der Punktzahl und weisen Sie es dem Feld scoreText im Skript ScoreManager 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.