Unity3D KI/AI Tutorial: #4 – NPC Follower / Begleiter – Ausrichtung mit Quaternion
Weitere Tutorials zum Thema Künstliche Intelligenz in Unity findet Ihr in der Übersicht dieser Unity3D KI/AI Tutorial Serie.
In den letzten beiden Tutorial-Folgen hatten wir uns in Unity3D einen Questgeber programmiert.
Nun wollen wir mit einem neuen Thema beginnen und einen freundlich gesonnenen NPC Follower / Verfolger entwickeln.
Tutorial-Inhalt
Ein Verfolger, also ein NPC Begleiter (Non player Character), soll eine Menge können:
- So soll er erkennen, wo Ihr Euch befindet.
- Er muss registrieren, wenn Ihr Euch zu weit entfernt seit, damit er Euch folgt.
- Und er muss natürlich auch dann wiederum rechtzeit stehenbleiben, um einen gewissen Abstand zu Euch zu waren. Schließlich soll er Euch ja nicht über den Haufen rennen.
- Außerdem soll er Schrägen hochgehen können und dabei auch immer korrekt ausgerichtet sein.
Natürlich werden bei der Entwicklung nach und nach auch auf Probleme stoßen. Die werden wir aber so weit es geht versuchen zu Minimieren.
In diesem ersten Abschnitt werden wir nun zunächst dafür sorgen, dass sich der „Non Player Character“, oder kurz NPC, erstmal nur zu uns hinschaut. Damit dies aber etwas realisitischer wirkt, wollen wir dies aber nicht in Echtzeit machen und die von Unity hauseigenen Funktion LookAt nutzen, sondern wir werden eine kleine Verzögerung in die Ausrichtung integrieren. So wird der KI-Charakter immer etwas hinterher hängen und etwas natürlicher wirken.
Für einen freundlich gesonnen NPC ist das vielleicht nicht so notwendig. Wenn Ihr aber Gegner entwickelt, sollten diese schon etwas verzögert reagieren. Ansonsten hättet Ihr ideale Gegner, die Euch z.B. immer direkt im Zielvisier haben. Und das wäre ziemlich ungerecht dem Spieler gegenüber, oder 😉
Video-Tutorial
Seht nun den ersten Abschnitt des NPC Follower Kapitels. Nächste Woche folgt dann der nächste (mehr dazu weiter unten) . Viel Spaß!
Hat Euch das Unity3D Tutorial gefallen? Oder habt Ihr Fragen? Dann habt Ihr jetzt wieder Platz für Eure Meinungen und Kommentare!
In dem nächsten Tutorial werden wir uns dann darum kümmern, dass sich unser KI-Charakter auch bewegt beziehungsweise vorwärts geht, um immer in der Nähe unseres Spielcharakters zu bleiben.
Hier geht es zu dem nächsten Unity3D KI/AI Tutorial: #5 – NPC Follower / Begleiter – Gehen .
Hi, sehr coole Seite und sehr interessante Tutorial. sogar so gut, das ich glatt mein Browsergame links liegen lasen würde, wenn meine Frau es nicht gern weiter führen würde.
was aber eigentlich wirklich eine Hürde ist, ist C#. Ich würde gern gleich mit C# programmieren habe aber nur Erfahrung in PHP und ein wenig Java. Ich weiß zwar, das die Syntax sehr ähnlich ist aber trotzdem wäre es sehr von voreilt wenn Sie (oder du^^) mal ein kleines Filmchen über die wichtigsten Sachen bei C# erstellen können. Es gibt bestimmt schon einige aber hier gefällt mir der Stil recht gut
grüße Skanky
Vielen Dank 🙂
Also C# ist gar nicht so schwer, wie viele denken. Wenn Du Erfahrungen mit Java hast, sollte der Einstieg in C# sogar relativ einfach sein. Und außerdem kannst Du in Unity auch mit Javascript und Boo programmieren.
Nebenbei: Meine erste Tutorial-Reihe hab ich komplett in Javascript gemacht, weshalb ich in dieser Reihe immer mal wieder auf die Unterschiede von C# und JS hinweise 🙂
Jap, ich hab schon überall reingeschaut^^
was mich aber wirklich interessiert: Muss ich alles was die KI machen soll in einer Klasse packen? oder kann man auch mehrere Klassen erstellen (da man ja vieles doppelt braucht) und dann gewisse Methoden und Variablen in anderen Klassen nutzen?
Bsp: Ich hab eine NPC welche zu meiner Figur guckt wenn ich in der nähe bin. Jetzt soll er, wenn ich dichter dran bin ein Text (wie im letzten Tutorial) starten („Soll ich folgen?“) und je nachdem ob man nun „Ja“ oder „Nein“ anklickt soll der NPC folgen. Wenn man das alles in einer Klasse schreibt ist das kein Problem, jetzt will ich aber viele NPCs haben die einem folgen können und müsste dann ja für jeden NPC die Klasse zuweisen aber dann haben ja alle die selben Text und Co.
Irgendwie bin ich da noch nicht ganz hinter gestiegen, denn bei meinen jetzigen Erfahrungen im programmieren hatte man immer eine Script wo die Klassen rein geladen wurden und man sie dann nutzen kann.
Hofe mir kann an dieser Stelle einer helfen^^ (proge mit C#)
danke schon mal im voraus Skanky
Du kannst natürlich Deinen Code in mehreren Skripten unterbringen.
Und dann kommt es natürlich darauf an, was dann da drin steht. Z.B. kannst Du Objekte von Skripten bzw. deren Klassen ganz normal initialisieren und im Code nutzen. Oder Du kannst natürlich auch mehrere Skripte einem Objekt als Komponente zuweisen(entweder per Drag and Drop oder via Code).
Hm, ich hab es jetzt über var.SendMessage gemacht aber irgendwie geht das nicht, ich habe das Target bestimmt und zugewiesen die Zielfunktion ist auch da. Es soll ein Boolen übergeben werden. Aber er sagt mir immer:“NullReferenceException“ <– im Script mit dem SendMassage.
Ich komme hier irgendwie nicht weiter 🙁
sorry für den Doppelpost, aber es Funktioniert^^ keine Ahnung warum aber es geht 😀
Aber kann es sein das bei Unity3D (also dem Programm) manche Einstellungen nicht immer beim ersten mal übernommen werden?.
Welche Einstellungen meinst Du genau? Wenn Du Einstellungen während des Testens machst (also wenn das Spiel läuft), dann werden die vorgenommenen Einstellungen beim Anhalten des Spiels wieder verworfen. Das ist ganz sinnvoll, um temporär einfach mal ein bisschen mit den Parametern herum zu experimentieren.