Nicht eingeloggt
Registrieren

UE3 - Kismet Actions

Einleitung:

Dieses Tutorial hat das Ziel, die verschiedenen Funktionen von Kismet-Elementen zu beschreiben, die unter "Actions" im Kontextmenü gefunden werden können.

Vorausgesetztes Wissen: "Intro in Kismet " und wie man eine simple Testmap erstellt (BSP, Licht, Pfadnetzwerk und Playerstart).

Actions führen beliebige Aktionen an Actoren im Level aus, je nach Einstellungen und gewählter Action.

Nachdem du das Tutorial "Intro in Kismet" gelesen hast, solltest du in der Lage sein, Kismet-Elemente über das Kontextmenü zu erstellen. 

Inhalt:

Actor Actor Factory/Actor Factory Ex
Assign Controller
Attach To Actor
Cause Damage
Change Collision
Destroy
Get Distance
Get Velocity
IsAffectedByLightingChannel
Set Material
Set SkeletalMesh
Set StaticMesh
Teleport
AI
Abort Move
Make Noise
Move To Actor (Latent)
Camera
Camera Shake
Depth Of Field
Look At
Motion Blur
Set Camera Target
Set Post Process
Cover
Modify Cover
 Event Activate Remote Event
Attach To Event
 Level Change Level Visibility
Commit Map Change
Prepare Map Change
Stream Level
Stream Multiple Levels
Trace
Wait For Levels To Be Visible
 Misc Console Command
Delay
Finish Sequence
Force Feedback
Force Garbage Collection
Gate
Log
Timer
 Object IsIn ObjectList
Modify ObjectList
 Object Property
GetProperty
 Particles Set Particle Param
 Pawn Give Inventory
Posses Pawn
 Physics Set BlockRigidBody
Set Physics
Set RigidBodyIgnoreVehicles
 Set Variable
Bool
Float
Int
Object
String
Vector
 Sound Apply Sound Node
CrossFadeMusic Tracks
Fade To Silence
Play FaceFx Anim
Play Replicated Sound
Play Sound
Play Sound UI
Set Music Track
 Switch Delayed Switch
Random
Ranged
Switch
 Toggle Toggle
Toggle Cinematic Mode
Toggle Dynamic Channel
Toggle God Mode
Toggle Hidden
Toggle HUD
Toggle Input
 UI Close Scene
Open Scene

 

 

 


 

 

Actor Factory/Actor Factory Ex

ActorFact01.jpg

Actor Factories & Actor Factory Ex sind im allgemeinen dazu da, um KI gesteuerte Objekte im Level zu spawnen. Sie können aber auch andere Items spawnen.

Die wesentlichen Unterschiede zwischen Actor Factories und Actor Factoy Ex's sind:

Diese Screensthos sind von einer Actor Factory und von einer Actor Factory Ex, jedes mit einem SpawnCount von 2, was in den Einstellungen zugewiesen wurde.

ActFactVar01.jpg

ActFactVar02.jpg

Lasst uns nun die Ins und Outs der Kismetelemente genauer betrachten:

Jetzt wo wir so eine Factory haben, was können wir damit tun? Fügen wir die Variablen dafür hinzu.

ActFact2Node.jpg

  1. Markiere einen PathNode in der Testmap und öffne das Kontextmenü. Du wirst einen Eintrag "New Object Var Using Pathnode_0" finden. Dies sagt Kismet, eine neue Objektvariable zu erstellen und den Actor PathNode_0 damit zu referenzieren. So verbindest du Objektvariablen mit Actoren in deiner Map. Zu dem "New Event Using PathNode_0" werden wir in einem anderen Tutorial kommen.
  2. Verschiebe es mit gedrückter STRG-Taste unter den "Spawn Point" Node der Actor Factory, wie du einen Actor in der Map verschieben würdest.
  3. Verbinde es mit dem "Spawn Point" Node, indem du eine Linie von dem lila Dreieck unter dem Eintrag "Spawn Point" der Actor Factory zur Object Variable ziehst und dort die Maustaste loslässt.
  4. Für die Actor Factory Ex werden wir ein zweites Objekt brauchen, daher wirst du die erste Object Variable duplizieren, indem du STRG+D drückst. Das neue Objekt schiebst du wieder mit gedrückter STRG-Taste unter den Eintrag "Spawn Point" der Actor Factory Ex. Wieder verbindest du den Node "Spawn Point" mit der Objektreferenz. Jetzt sollte das etwa so aussehen:
    ActFactNode.jpg
  5. Jetzt können wir mit einigen Einstellungen in den Actor Factories etwas genau beim PathNode_0 spawnen. Aber wir wollen dem gespawnten Objekt hinterher noch ein paar Kommandos geben, daher geben wir diesem Objekt eine eigene Objekt Variable, damit wir auf die Referenz in Kismet zugreifen können.
    Um das zu bewerkstelligen, werden wir eine leere Objekt Variable erstellen, die sich um das später gespawnte Objekt kümmern wird, und diese mit den Actor Factories verbinden.
    Wir werden also mit New Variable -> Object -> Object wie im Screen darunter eine solche Variable erstellen.
    ActFactObj.jpg
  6. Hast du das geschafft, dupliziere das Objekt und verbinde beide mit den "Spawned" Nodes jeder Actor Factory, bis es hinterher so aussieht:
    ActFactObj02.jpg

    Lasst mich kurz innehalten und nochmal zum Punkt kommen: Das Pathnode_0 Objekt ist das "Wohin?" von dem, was die Actor Factory spawnen soll. Das leere "???" Objekt ist das "Was?" was gespawnt werden soll, wenn wir mit Kismet die Kontrolle darüber erlangen wollen.
  7. Dieser Schritt betrifft nur die ActorFactory. Wie du sehen kannst, haben wir noch einen freien "Spawn Count" Node an der Actor Factory. Lasst uns also einen Integerwert dafür erstellen, in etwa so:

ActFactInt01.jpg

Und verbinde diesen mit dem "Spawn Count" Node der Actor Factory:

ActFactInt01.jpg

Ändere dann den Wert der Intergervariable zu "1", etwa so:

ActFactInt03.jpg

Das bedeutet, dass die Actor Factory eine Anzahl von "1" an PathNode_0 des Objektes, welches mit der Objektvariable "???" referenziert wird, spawnen wird.

Anm.: Das "Spawn Count" ist bei der Actor Factory Ex nicht als Node vorhanden, sondern diesen Wert gibt es in dessen Einstellungen. In der Actor Factory gibt es auch ein solches Feld, wo der "Spawn Count" wert fix eingetragen werden kann. Wird wie im obigen Beispiel eine Variable für den Spawn Count benutzt, wird der dort vorhandene Wert den Wert in den Einstellungen überschreiben.

Einstellungen:

Lasst uns nun einen Blick auf die Einstellungen der Actor Factories werfen:

ActFactProp01.jpg

Lasst uns nun auf den Factory-Eintrag etwas näher eingehen.
Wenn der Factoryeintrag markiert ist, wird ein kleiner blauer Pfeil erscheinen. Klicke darauf, um ein Menü zu öffnen, das eine Liste an möglichen Objekten anzeigt, die durch diese Factory gespawnt werden können.

ActFactFact.jpg

Wenn du auf das kleine graue Quadrat links neben dem blauen Pfeil klickst, wird das die Factroyliste leeren.

Es gibt so viele mögliche Objekte die auf diesem Wege gespawnt werden können. Jedes einzeln zu erklären würde den Umfang dieses Tutorials sprengen. Außerdem sind sie ziemlich selbsterklärend, weshalb das Thema hier beendet wird.

 

 

Assign Controller

asscont.jpg

Assign Controller wird dazu benutzt, einen neuen AIController einem existierenden Objekt zuzuweisen.

asscontprop.jpg

  1. Erstelle die Assign Controller Action.
  2. Wähle in dessen Einstellungen die ControllerClass aus, die dem Objekt zugewiesen werden soll, indem du auf den Pfeil rechts im Feld klickst.
  3. Verbinde den Lila Node mit der Beschriftung "Target" mit der Objektvariable, die der Controller übernehmen soll.

Und das war's auch schon. Die Einträge in ControllerClass unterscheiden sich von Spiel zu Spiel, jenachdem welcher Code dahintersteckt.

 

 

 

Attach To Actor

atttoact.jpg

Attach To Actor wird dazu benutzt, einen Actor an einen anderen zu hängen.

Anm.: Diese Art von Verbindung kann auch ohne Kismet getätigt werden. Es wird aber manchmal nötig sein, etwas mit einem anderen Actor zu verbinden, wobei einer oder beide der Objekte zu der Zeit noch nicht existent waren. Hiermit kann dies bewerkstelligt werden.

Wie man im Einstellungsfenster sehen kann, kann man bestimmte Objekte auch an einen bestimmten bone hängen, etwas ablösen (detach), einen Abstand definieren, oder die Rotation zwischen den beiden Objekten verändern. HardAttach verbindet die beiden Objekte so, dass sie relativ zueinander ihre Position nicht verändern.

atttoactprop.jpg

 

 

 

Cause Damage

causedam01.jpg

Cause Damage wird benutzt, um einem Objekt Schaden zuzufügen.

causedam02.jpg

 

 

Change Collision

changecoll01.jpg

Change Collision ändert das Kollisionsverhalten eines Actors.

Hier ist ein gewisses Verständnis der Kollision in Unreal vorausgesetzt um korrekte Einstellungen zu treffen. Dies würde über dieses Tutorial hinausgehen, wie man aber sehen kann, kann die Kollision eines Actors während des Spiels aktiviert und deaktiviert werden.

changecoll02.jpg

 

 

Destroy

destroy01.jpg

Destroy entfernt einen Actor aus der World.

Destroy hat keine besonderen Eingenschaften - es entfernt den Actor ganz einfach.

destroy02.jpg

 

 

Get Distance

getdist01.jpg

Get Distance misst den Abstand zwischen zwei Objekten und speichert das Ergebnis in UU (Unreal Units) in eine Float-Variable.

getdist02.jpg

 

 

 

Get Velocity

getvel01.jpg

Get Velocity misst die herrschende Schwerkraft, die ein Actor erfährt und gibt diese in UU (Unreal Units) pro Sekunde zurück.

getvel02.jpg

 

 

 

IsAffectedByLightingChannel

lightchan01.jpg

IsAffectedByLightingChannel überprüft, ob ein bestimmtes Objekt, das während der Laufzeit erstellt wird, von einem bestimmten LightChannel beeinflusst wird oder nicht.

lightchan02.jpg

 

 

 

 

Set Material

setmat01.jpg

Set Material erlaubt das Ändern eines Materials während des laufenden Spiels.

setmat02.jpg

 

 

Set Skeletal Mesh

setskel01.jpg

Set Skeletal Mesh erlaubt es, einen SkeletalMesh während eines Spiels auszutauschen.

setskel02.jpg

 

 

 

Set StaticMesh

setstatic01.jpg

Set StaticMesh erlaubt es, einen StaticMesh während eines Spiels auszutauschen.

setstatic02.jpg

 

 

Teleport

tele01.jpg

Teleport teleportiert einen Actor zu einem bestimmten Zielpunkt.

tele02.jpg

 

 

Abort Move

abortmove01.jpg

Abort Move stoppt die Bewegung eines "Move To" Kommandos eines KI gesteuerten Objekts.

abortmove02.jpg

 

 

 

Make Noise

makenoise01.jpg

Make Noise löst ein "Geräusch" aus, welches nur für KI-Gesteuerte Objekte hörbar ist.

makenoise02.jpg

 

Move To Actor (Latent)

movetoact01.jpg

Move To Actor (Latent) lässt einen beliebigen KI gesteuerten Pawn sich zu einem beliebigen Ziel bewegen und dabei auf ein bestimmtes Ziel zu schauen wenn eingestellt.

movetoact02.jpg

 

 

Camera - Camera Shake

camshake01.jpg

CameraShake wird benutzt, um die "Kamera" des Sichtbereiches zu schütteln bzw. zu bewegen.

camshake02.jpg

camshake03.jpg

 

 

Camera - Depth Of Field

dof01.jpg

Depth of Field ändert das Sichtfeld des Ziels (Target), gewöhnlich das des Spielers. Es ist im Grunde wie eine FOV Änderung, nur mit ein paar mehr Einstellungen.

dof02.jpg

 

 

Camera - Look At

look01.jpg

Look At übernimmt die Steuerung der Kamera und richtet sie auf einen bestimmten Punkt aus. Die Kamera wird zwar nicht bewegt, sie wird aber so gedreht, bis sie auf das festgelegte Objekt schaut.

look02.jpg

 

 

Camera - Motion Blur

motblur01.jpg

Motion Blur wird benutzt, um einen ein- und ausschaltbaren Verwischungs-Effekt bei der Kamerabewegung zu erzeugen.

motblur02.jpg

 

 

folgt in Kürze...

 

Camera - Set Post Process

setpp01.jpg

Set Post Process wird benutzt, um einen PostProcess Effekt zu einer bestimmten Zeit zu erzeugen.

setpp02.jpg

 

 

 

Modify Cover

adjustcov01.jpg

Modify Cover wird benutzt, um Eigenschaften von Einträgen von Deckungsmöglichkeiten zu ändern, die zu "CoverLinks" gehören. Man nehme an, dass ein Objekt, welches einem Spieler Deckung gibt, durch einen Vorfall zerstört oder verändert wird, dass es von der KI nicht mehr als Deckungsmöglichkeit in Betracht gezogen werden soll. Hiermit kann diese Information angepasst werden.

adjustcov02.jpg

 

 

 

Activate Remote Event

actremevent01.jpg

Activate Remote Event sendet eine Nachricht über alle Sequenzen, eine Sequenz oder sogar mehrere Level, wenn diese geladen sind, um ein "Remote Event" auszulösen.

Anm.: Es wird dringendst empfohlen, als ObjComment auch den EventName zu benutzen, was die Übersicht extrem steigert, vor allem wenn eine oder mehrere Kismet Sequenzen nach einem bestimmten EventName durchsucht werden müssen.

Anm.: Das ist nur eine persönliche Erfahrung und muss nicht für alle UE3 Versionen gelten: Wenn mehrere Nachrichten eines gleichen Remote Events auf einmal abgegeben werden, kommt es vor, dass nicht alle Remote Events darauf reagieren. Das Signal scheint zumindest nicht durch alle durchzugehen. Nur um davon mal gehört zu haben ;)

actremevent02.jpg

 

 

 

Attach To Event

attachtoevent01.jpg

Attach To Event verbindet eine Objektreferenz mit einem Event.

Ein Beispiel dafür wäre ein Pawn, der an PathNode_0 gespawnt wird. Dieser Pawn würde dann von der ??? Objektvariable repräsentiert werden.
Nehmen wir an, wir wollen, dass irgendetwas passiert, sobald der Pawn stirbt. Da der Pawn erst nach dem Levelstart erstellt wird, brauch Kismet etwas, das den Pawn repräsentiert, um feststellen zu können, wann dieser Pawn stirbt. Kismet erkennt dies und gibt ein Signal von einem DeathEvent ab. Das "Attach to Event" bindet also dieses DeathEvent an die Pawn Referenz.

attachtoevent02.jpg

 



Level - Change Level Visibility

levchangevis01.jpg

Change Level Visibility wird dazu benutzt, ein komplettes Level anzuzeigen oder auszublenden. Das Level könnte nur ein Script, Decoration oder irgendetwas anderes sein. Es ist aber nicht mit load/unload zu vergleichen, sondern wie bei einem Lichtschalter entweder sichtbar oder nicht.

Diese Aktion wird oft im Zusammenhand mit einer Level Load/unload Funktion genutzt. Wenn du ein Level laden möchtest bevor der Spieler dort eintrifft, in dieser Zeit es aber verbergen willst, um Renderauslastung zu sparen, kannst du es versteckt laden und es dann durch einen Auslöser sichtbar machen.

levchangevis02.jpg




folgt in Kürze...

folgt in Kürze...

 

Level - Stream Level

levstream01.jpg

Stream Level wird genutzt, um ein Level aus einer aktuellen oder einer Mastermap zu laden.

Diese Aktion wird benutzt, wenn ein kleineres Sublevel in einer größeren Map liegt. Stell dir ein riesiges offenes Terrain vor mit einigen kleinen Bereichen, die mit BSP, StaticMeshes oder ähnlichem gefüllt sind. Das Terrain würde also im "Hauptlevel" liegen. Jeder Quadrant wäre sein eigenes Level der im Terrainlevel existiert. Abhängig davon, wo der Spieler sich gerade aufhält, kannst du die Stream Level Funktion benutzen, um entsprechende Levelteile laden wenn der Spieler in deren Nähe kommt und sie wieder entladen, wenn sich der Spieler deren Bereichen entfernt. Auf diesem Wege ist der Spieler immer von Level umgeben, und unnötige Bereiche werden gar nicht erst berechnet, wenn der Spieler sie nicht sieht oder nicht mit ihnen interagiert.

levstream02.jpg

 

 

 

Level - Stream Multiple Levels

levstreammulti01.jpg

Stream Multiple Levels wird genutzt, um mehrere Level laden oder entladen zu können.

Diese Aktion wird benutzt, wenn es mehrere kleinere Sublevels in einer großen Map gibt. Stell dir ein riesiges Terrain mit mehreren kleinen Bereichen vor, die mit BSP der StaticMeshes gefüllt sind. Im Prinzip das Selbe wie "Stream Level", nur dass es kontrolle über das Laden/Entladen mehrerer Bereiche gleichzeitig gibt.

levstreammulti02.jpg


 

folgt in Kürze...

 

Level - Wait For Levels To Be Visible

levwaitvis01.jpg

Wait For Levels To Be Visible wird dazu genutzt, um Events zu pausieren, bis das Level x sichtbar und bespielbar ist.

Ein Kismetsignal kann in einem nicht geladenen Level nichts ausrichten. Gibt es ein Event in Map "A", die in Map "B" etwas auslösen soll, Map "B" aber noch nicht geladen und/oder sichtbar ist, kann diese Kismet Funktion das Signal solange anhalten, bis das zugewiesene Level im Stande ist, das Signal zu verarbeiten.

levwaitvis02.jpg

 

 

 

Console Command

consolecom01.jpg

Console Command sendet ein Konsolenkommando ins Spiel, als ob man ihn in die Konsole eingegeben hätte.

Anm.: Wenn du die Player Variable benutzt, vergewissere dich, dass "All Players" deaktiviert ist, sonst betrifft das Kommando auch alle Spieler.

consolecom02.jpg

 

 

Delay

delay01.jpg

Delay stellt eine Verzögerung des Signals dar, welches durchgereicht wird.

delay02.jpg

 

 

Finish Sequence

finishseq01.jpg

Finish Sequence Sendet ein Signal aus einer Sequenz raus, damit spätere Kommandos benutzt werden können.

finishseq03.jpg

finishseq02.jpg

 

 

 

Force Feedback

forcefeed01.jpg

Force Feedback ist eine Technik, die bei entsprechend ausgerüsteten Steuergeräten, Joysticks oder -Pads Erschütterungen hervorruft. Diese Funktion steuert diese.