Charactercontroller Battlechar: Unterschied zwischen den Versionen

Aus Sternenschweif Wiki
Wechseln zu: Navigation, Suche
(Notwendige Parameter)
(Anmerkungen für das Gameobject)
 
(9 dazwischenliegende Versionen von einem Benutzer werden nicht angezeigt)
Zeile 3: Zeile 3:
 
Dokumentation für die Erstellung von Nonhumanoid Characters für den Kampf mittels General Animation Controller
 
Dokumentation für die Erstellung von Nonhumanoid Characters für den Kampf mittels General Animation Controller
  
=Notwendige Parameter=
+
=Parameter=
 
* '''Direction''' float: Richtung für Move/Turn
 
* '''Direction''' float: Richtung für Move/Turn
 
* '''move''' boolean: true wenn sich der Charakter bewegen soll
 
* '''move''' boolean: true wenn sich der Charakter bewegen soll
Zeile 11: Zeile 11:
 
* '''execute''' trigger: Auslöser der sonstigen Animationen
 
* '''execute''' trigger: Auslöser der sonstigen Animationen
 
* '''castmagic''' trigger: Auslöser von Zauberaktionen
 
* '''castmagic''' trigger: Auslöser von Zauberaktionen
 +
==Optionale Parameter==
 
* '''variation''' int: Variationsvariable, alternative Animationen je Aktion
 
* '''variation''' int: Variationsvariable, alternative Animationen je Aktion
 +
* '''speed''' float: aktuelle Bewegungsgeschwindigkeit entsprechend Animation
  
 
=Action Codes=
 
=Action Codes=
Zeile 20: Zeile 22:
 
* 4: Verteidigung fehlgeschlagen, nimmt Schaden
 
* 4: Verteidigung fehlgeschlagen, nimmt Schaden
 
* 5: Verteidigung fehlgeschlagen, geht zu Boden
 
* 5: Verteidigung fehlgeschlagen, geht zu Boden
 +
* 6: IdleBreak (falls vorhanden)
 +
 +
=State Reports=
 +
Jeder Animationszustand benötigt einen State Reporter, damit der Status korrekt im Animationscontroller bekannt ist.
 +
 +
==AnimControllerStateReport==
 +
Für folgende Stati ist der Status nur zu Debugzwecken relevant
 +
* "hit": Getroffen
 +
* "block": Angriff abgeblockt
 +
* "evade": Ausgewichen
 +
* "turn": in der Drehung
 +
 +
Folgende Stati MÜSSEN in den entsprechenden Stati gesetzt werden:
 +
* "move": in der Bewegung
 +
* "idle": wenn nichts anderes getan wird
 +
 +
==AnimationControllerReportIdle==
 +
Für den "Idle"-Zustand
 +
 +
==AnimationcontrollerReportAttack==
 +
Für "Angriffs"-Zustände. Hier werden außerdem folgende Ereignisse der Animation abgefangen:
 +
* "OnHit": Die "getroffen"-Animation des Ziels soll starten
 +
* "OnBlock": Die "abblocken"-Animation des Ziels soll starten
 +
* "OnFire": Die Animation des Projektils bei einem Fernkampfangriff soll starten
 +
=Anmerkungen für das Gameobject=
 +
* Wenn BattleCharBehaviour nicht direkt auf dem selben Gameobjekt liegt wie der Animator, zB damit das Gameobject besser organisiert werden kann, dann wird direkt beim Animator das Skript "BCB Reference" benötigt, mit Verknüpfung auf das eigentliche BCB
 +
* Für das Kampf-UI wird ein UITrigger benötigt, Layer BattleChar, Collider "IsTrigger" aktiviert, ebenfalls mit einem "BCB Reference" Script versehen.
 +
* Benötigt AudioSource
 +
 +
=Anmerkungen für die Animationen=
 +
Folgende Animation Events müssen gesetzt werden, da ansonsten die Timings für Reaktionen nicht ausgelöst werden:
 +
 +
==Bei Angriffsanimationen==
 +
* '''OnBlock''' -> wenn der Angriff geblockt wird, wann die Blockanimation / Ausweichanimation des Gegners starten sollte
 +
* '''OnHit''' -> wenn der Angriff erfolgreich ist, wann die "Getroffen"-Animation des Gegners starten sollte

Aktuelle Version vom 28. November 2017, 23:26 Uhr


Dokumentation für die Erstellung von Nonhumanoid Characters für den Kampf mittels General Animation Controller

Parameter

  • Direction float: Richtung für Move/Turn
  • move boolean: true wenn sich der Charakter bewegen soll
  • turn boolean: true wenn sich der Charakter drehen soll
  • forceidle trigger: gesetzt wenn sich der Charakter in den Idle versetzen soll
  • action int: welche Animation ausgeführt werden soll
  • execute trigger: Auslöser der sonstigen Animationen
  • castmagic trigger: Auslöser von Zauberaktionen

Optionale Parameter

  • variation int: Variationsvariable, alternative Animationen je Aktion
  • speed float: aktuelle Bewegungsgeschwindigkeit entsprechend Animation

Action Codes

  • 0: Erfolgreicher eigener Angriff
  • 1: Fehlgeschlagener eigener Angriff
  • 2: Ausweichen eines Gegnerangriffs
  • 3: Verteidigung abgeblockt
  • 4: Verteidigung fehlgeschlagen, nimmt Schaden
  • 5: Verteidigung fehlgeschlagen, geht zu Boden
  • 6: IdleBreak (falls vorhanden)

State Reports

Jeder Animationszustand benötigt einen State Reporter, damit der Status korrekt im Animationscontroller bekannt ist.

AnimControllerStateReport

Für folgende Stati ist der Status nur zu Debugzwecken relevant

  • "hit": Getroffen
  • "block": Angriff abgeblockt
  • "evade": Ausgewichen
  • "turn": in der Drehung

Folgende Stati MÜSSEN in den entsprechenden Stati gesetzt werden:

  • "move": in der Bewegung
  • "idle": wenn nichts anderes getan wird

AnimationControllerReportIdle

Für den "Idle"-Zustand

AnimationcontrollerReportAttack

Für "Angriffs"-Zustände. Hier werden außerdem folgende Ereignisse der Animation abgefangen:

  • "OnHit": Die "getroffen"-Animation des Ziels soll starten
  • "OnBlock": Die "abblocken"-Animation des Ziels soll starten
  • "OnFire": Die Animation des Projektils bei einem Fernkampfangriff soll starten

Anmerkungen für das Gameobject

  • Wenn BattleCharBehaviour nicht direkt auf dem selben Gameobjekt liegt wie der Animator, zB damit das Gameobject besser organisiert werden kann, dann wird direkt beim Animator das Skript "BCB Reference" benötigt, mit Verknüpfung auf das eigentliche BCB
  • Für das Kampf-UI wird ein UITrigger benötigt, Layer BattleChar, Collider "IsTrigger" aktiviert, ebenfalls mit einem "BCB Reference" Script versehen.
  • Benötigt AudioSource

Anmerkungen für die Animationen

Folgende Animation Events müssen gesetzt werden, da ansonsten die Timings für Reaktionen nicht ausgelöst werden:

Bei Angriffsanimationen

  • OnBlock -> wenn der Angriff geblockt wird, wann die Blockanimation / Ausweichanimation des Gegners starten sollte
  • OnHit -> wenn der Angriff erfolgreich ist, wann die "Getroffen"-Animation des Gegners starten sollte