[Unity Automatic Pathfinding] Verwenden Sie das Navigationssystem, um eine automatische Wegfindung von Objekten zu realisieren und Hindernissen auszuweichen.

Flussdiagramm der Wissenspunkte

Automatisches Navigationssystem

In der Spielszene gibt es oft Hindernisse, Wände, Bäume usw. Wenn ich möchte, dass der Charakter oder das Monster auf die andere Seite der Wand geht, klicke ich direkt mit der linken Maustaste auf die andere Seite der Wand. Ich möchte das Der Charakter soll automatisch überfahren werden, aber er kann die Wand nicht direkt durchdringen. Er muss Hindernissen „intelligent“ ausweichen, automatisch den Weg finden, den er nehmen kann, und alleine passieren! Dabei hilft uns das Navigationssystem Unity! Bitte schauen Sie auf die große Leinwand!

Die Navigation in Unity ist wie ein intelligentes GPS-System, das Spielcharakteren sagt, wie sie am besten an ihr Ziel gelangen. Es berücksichtigt alle Hindernisse und findet einen optimalen Weg. Es ist, als würden Sie im wirklichen Leben eine Karte oder eine Navigations-App verwenden, um von einem Ort zum anderen zu gelangen.

Ohne Navigation läuft der Spielcharakter möglicherweise direkt auf Hindernisse zu oder verlässt die Spielgrenzen, wodurch das Spiel unrealistisch aussieht und die Spielbarkeit des Spiels beeinträchtigt wird. Mit der Navigation können Spielcharaktere genau wie echte Menschen wissen, wie sie Hindernissen ausweichen und den besten Weg wählen.

Daher besteht die Rolle der Navigation in Unity darin, den Spielcharakteren dabei zu helfen, sich realistischer und natürlicher zu bewegen. Es ermöglicht Spielcharakteren, ihre Umgebung zu verstehen und fundierte Entscheidungen zu treffen. Dies ist entscheidend für die Entwicklung eines unterhaltsamen und fesselnden Spiels!

In Unity können wir KI und Navigationsnavigation verwenden, um eine automatische Pfadfindung zu erreichen. Im Folgenden finden Sie ein detailliertes Framework und Schritte, die Ihnen helfen sollen, zu verstehen, wie Sie Szenen einrichten und die Navigationsnavigation in Unity verwenden. Befolgen Sie zum Einrichten diese Schritte:

1. Bauen Sie zunächst die Szene auf (Straßen und Hindernisse).

1.1 Statische Hindernisse
  1. Wählen Sie das Spielobjekt aus, das Sie als statisches Hindernis festlegen möchten.
  2. Öffnen Sie das Navigationsfenster.

  3. Aktivieren Sie auf der Registerkarte „Objekt“ die Option „Navigation statisch“.

4. Klicken Sie dann zum Backen auf Backen

Auf diese Weise haben Sie erfolgreich ein statisches Hindernis aufgebaut und die Stelle, an der das Hindernis entfernt wird, ist eine begehbare Straße!

1.2 Dynamische Hindernisse

In Unity ist ein dynamisches Hindernis ein spezielles Hindernis, das während des Spiels seine Position oder Form dynamisch ändern kann. Dies ist nützlich, um eine dynamische und herausfordernde Spielumgebung zu schaffen.

Um ein dynamisches Hindernis zu erstellen, müssen Sie Nav Mesh Obstacledem Spielobjekt lediglich eine aufgerufene Komponente hinzufügen. Diese Komponente teilt dem Navigationssystem mit, dass es sich bei diesem Objekt um ein Hindernis handelt und der Charakter es umgehen muss.

Wenn Sie ein Spielobjekt mit einer Komponente bewegen Nav Mesh Obstacle, aktualisiert das Navigationssystem automatisch das Navigationsnetz, um die neue Position des Hindernisses widerzuspiegeln. Das bedeutet, dass Ihr Charakter automatisch weiß, wie er dieses neue Hindernis umgehen kann.

  1. Wählen Sie ein beliebiges Spielobjekt aus.
  2. Fügen Sie die Komponente Nav Mesh Obstacle hinzu .

Damit haben Sie erfolgreich ein dynamisches Hindernis aufgebaut. Das NavMesh-Hindernis ist eine Komponente, die an das Objekt angehängt werden kann, das die Bewegung des Charakters blockieren soll. Es aktualisiert das NavMesh dynamisch, damit der Agent (was wir in dieser Navigationskarte automatisch trainieren) es umgehen kann.

1.3 Wenn es keine Verbindungsstraße gibt, können Sie eine Brücke bauen

  1. Erstellen Sie zwei Objekte als „Pfeiler“.
  2. Fügen Sie jedem Objekt eine Komponente „Off Mesh Link“ hinzu.

Off Mesh Link ist eine Komponente, die an ein Objekt angehängt werden kann, an dem der Charakter besondere Aktionen ausführen soll, wie z. B. Springen, Leitern erklimmen, Türen öffnen usw. Dadurch wird eine Verbindung zwischen dem NavMesh hergestellt, sodass der Agent es überqueren kann .

Ziehen Sie einen weiteren Pfeiler B in die Komponente von A. B muss keine Komponenten hinzufügen!

Auf diese Weise haben Sie erfolgreich eine Brücke gebaut, die der Charakter überqueren kann.

Natürlich können wir auch zulassen, dass zwei separate Regionalkarten automatisch Verknüpfungen erstellen, ohne manuell eine Brücke zu bauen.

Wählen Sie zunächst den ersten Bereich aus und aktivieren Sie „Generate OffMeshLinks in Object“.

Wählen Sie dann die zweite Schaltfläche „Regionale Einstellungen“ aus, oder wählen Sie beide gleichzeitig aus und überprüfen Sie sie zusammen!

Klicken Sie nach Abschluss auf Backen und die Brücke wird automatisch generiert:

Aber der Abstand zwischen den beiden Bereichen hängt mit der Sprungweite zusammen! Wenn die Sprungdistanz relativ klein ist, kleiner als der Abstand zwischen zwei Platten, wird die Verbindungsroute nicht generiert! Der Sprungparameter muss also größer sein als der Abstand zwischen den beiden Platten!

2. Objekte für die automatische Pfadfindung festlegen

  1. Erstelle den Protagonisten des Spiels.
  2. Hinzugefügte Komponente: Nav Mesh Agent.

NavMesh Agent ist eine Komponente, die an den Charakter angebracht werden kann, den Sie bewegen möchten. Es findet automatisch den besten Weg, vermeidet Hindernisse und andere Agenten und erzielt reibungslose Bewegungseffekte.

3. Lassen Sie den Charakter entsprechend der Navigation zu der mit der Maus angeklickten Stelle laufen.

Vollständiger Code:

Kerncode: MyNav.SetDestination(oneOutHitObj.point);//Es bedeutet, die Weltkoordinaten des Schnittpunkts des Strahls und des getroffenen Objekts zu erhalten und einen dreidimensionalen Vektor zurückzugeben

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.AI;

public class NavStudy : MonoBehaviour
{
    GameObject OneTARGET;
    GameObject AIPlayer;
    NavMeshAgent MyNav;
    // 实现一个物体自动寻路到达指定的坐标点
    void Start()
    {
        OneTARGET = GameObject.Find("Target");
        AIPlayer = GameObject.Find("Player");
        MyNav = AIPlayer.GetComponent<NavMeshAgent>();
    }

    // Update is called once per frame
    void Update()
    {
     
        if (Input.GetMouseButtonDown(0))
        {
            Ray MousePos = Camera.main.ScreenPointToRay(Input.mousePosition);
            RaycastHit oneOutHitObj;
            if (Physics.Raycast(MousePos,out oneOutHitObj))
            {
                if (oneOutHitObj.transform.tag=="Wall")
                {
                    Debug.Log("点击到地面了"+ MouseWorldPos);
                    //为点击的位置克隆一个球
                  //oneOutHitObj.point 的意思是获取射线与射中的物体的交叉点坐标,返回三维向量
                    MyNav.SetDestination(oneOutHitObj.point);//

                }
            }
        }
    }
}

Oben sind die detaillierten Schritte zur Verwendung von KI und Navigationsnavigation aufgeführt, um eine automatische Pfadfindung in Unity zu realisieren. Ich hoffe, dieser Artikel kann Ihnen helfen, diese Technologie zu verstehen und zu beherrschen. Wenn Sie Fragen haben oder weitere Erläuterungen benötigen, können Sie mich gerne fragen. Frohes Lernen!

4. BAKE-Parameter des Unity-Navigationspanels

Der unten erwähnte Agent ist der Protagonist, der den Weg auf der KI-Karte findet! 

Im Folgenden finden Sie eine detaillierte Erklärung und ein Beispiel für die BAKE-Parameter im Unity-Navigationsfeld: Hinweis: Unity bezieht sich auf die Werte dieser Parameter, die auf dem menschlichen Verhalten im Leben basieren! Diese Werte können also als Referenz die Parameter im menschlichen Leben simulieren!

1. Agentenradius

Nehmen wir an, Sie erstellen einen Ego-Shooter und Ihr Charakter ist ein Soldat. Sie stellen den Agentenradius auf 0,5 Meter ein, was bedeutet, dass die Soldaten während des Navigationsvorgangs automatisch mindestens 0,5 Meter von Wänden oder anderen Hindernissen entfernt bleiben, um zu nahe zu kommen oder zu kollidieren, wobei der Abstand zwischen dem KI-Protagonisten und eingehalten wird Hindernisse!

2.Agentenhöhe

Direkt übersetzt als Größe des KI-Protagonisten (Agenten)! Im selben Schießspiel stellen Sie die Agentenhöhe auf 2 Meter ein. Das bedeutet, dass der Soldat bei einem Tunnel oder einer Öffnung mit einer Höhe von weniger als 2 Metern nicht passieren kann, da seine Körpergröße (Agentengröße) diesen Grenzwert überschreitet. Legen Sie die Mindesthöhe fest, bei der Charaktere durch Löcher und Türen gelangen können! Wenn er auf 0,8 Meter eingestellt ist, bedeutet dies, dass der Abstand zwischen der Ober- und Unterseite der Szene, der das Loch in der Szene bildet, nicht weniger als 0,8 betragen darf. Wenn er größer als 0,8 ist, wird er in einen Durchgang gebacken!

3.Maximale Steigung

Sie stellen die maximale Neigung auf 45 Grad ein. Das heißt, wenn in Ihrer Spielumgebung ein Hügel mit einer Neigung von mehr als 45 Grad vorhanden ist, kann der Soldat diesen nicht besteigen, da die Neigung die maximale Neigung übersteigt, die er bewältigen kann. Wenn vor dem Backen der Winkel zwischen Modell und Boden größer als der eingestellte Maximalwinkel ist, kann der Hang nicht zu einem begehbaren Weg gebacken werden! Wenn der Winkel kleiner als der eingestellte Winkel ist, wird er zu einem Pfad gebacken. Wenn der KI-Charakter die Zielkoordinaten auf dem Hang erhält, wird er den Hang entlang laufen!

4. Schritthöhe

Sie stellen die Stufenhöhe auf 0,4 Meter ein. Das bedeutet, dass der Soldat im Spiel bei einer Stufe mit einer Höhe von mehr als 0,4 Metern nicht in der Lage ist, diese zu besteigen oder direkt zu überqueren, da er eine so hohe Stufe nicht überqueren kann. Der hier erwähnte Sprung ist sehr interessant: Wenn dem KI-Protagonisten ein hohes Hindernis den Weg versperrt, kann er entsprechend seiner maximalen Höhensprungfähigkeit darüber springen!

Einfach ausgedrückt ist es die maximale Höhe, die der Charakter springen kann! Genau wie beim Sport gilt: Erhöhen Sie die maximale Höhe, die Sie bei einem Wettkampf springen können! Diese Höhe muss außerdem geringer sein als die Agentenhöhe. Das System geht davon aus, dass es für Sie unmöglich ist, höher als Ihre eigene Körpergröße zu springen!

 5. Fallhöhe

 Dies ist die Höhe, in der Sie einem Sturz widerstehen können! Diese Höhe hat nichts mit dem vorherigen Wert zu tun! Schließlich kann ein Mensch 6 m groß sein und 1 m hoch springen, aber er kann aus einer Höhe von 3 Metern springen! Es ist auch vernünftig! Sie stellen die Fallhöhe auf 2 Meter ein. Dies bedeutet, dass ein Soldat aus einer Höhe von bis zu 2 Metern springen kann, ohne Schaden zu nehmen. Wenn er jedoch aus einer Höhe von mehr als 2 Metern springen muss, kann dies zu Verletzungen oder zum Tod führen.

6. Sprungweite

Sie stellen die Sprungdistanz auf 3 Meter ein. Das bedeutet, dass ein Soldat im Spiel über Schluchten oder Hindernisse mit einer Breite von nicht mehr als 3 Metern springen kann, aber wenn er auf eine breitere Schlucht trifft, kann er nicht darüber springen.

5. Über die optimalen Bereichseinstellungen (Areas)

  1. Flächen und Einrichtungskosten (Kosten) zuordnen

Im Abschnitt „Bereich“ des Navigationsfensters können Sie vordefinierte Bereiche und benutzerdefinierte Bereiche sehen.

Definieren Sie zunächst selbst einige Zuordnungsbereiche: Erstellen Sie beispielsweise Grasland, Wüsten, Wälder und Sümpfe und weisen Sie diese _begehbaren Bereichen zu (z. B. Bereich 0); Sie können vulkanische Bereiche _nicht begehbaren Bereichen zuordnen (z. B. Bereich 4); erstellen Sie eine Benutzerdefinierten Bereich, z. B. „Brücke“, und weisen Sie eine eindeutige Zonennummer zu, z. B. 20.

Legen Sie dann die Kosten fest: Suchen Sie im Abschnitt „Agentenparameter“ des Navigationsfensters die Einstellung „Gebietskosten“. Setzen Sie die Kosten des _walkable-Bereichs auf 1 (Standardeinstellung) und legen Sie dann jeweils die Kosten für Wüste, Wald, Sumpf und Brücke fest. Beispielsweise sind die Kosten einer Wüste auf 2, die Kosten eines Waldes auf 1,5, die Kosten eines Sumpfes auf 3 und die Kosten einer Brücke auf 10 festgelegt.

Diese Kosten ermöglichen es dem KI-Charakter, automatisch den Routenbereich mit den niedrigsten Kosten auszuwählen!

Der dritte Schritt besteht darin, diese Bereiche dem Modell der Szene zuzuordnen.

Wählen Sie das Modell aus, beispielsweise ein Dschungelgebiet

Klicken Sie dann auf „Backen“, um zu backen!

Dieses Modell wird zu einem Dschungelgebiet 

Alle anderen Module sind analog aufgebaut!

Zum Schluss klicken Sie auf „Gemeinsam backen“!

Auf diese Weise wählt der KI-Charakter (Agent) automatisch die Route mit dem kleinsten Wert entsprechend dem Wert „Kosten“ aus!

Acho que você gosta

Origin blog.csdn.net/leoysq/article/details/135050226
Recomendado
Clasificación