animate problem

Übersicht BlitzBasic Blitz3D

Neue Antwort erstellen

 

mevos

Betreff: animate problem

BeitragMi, März 28, 2007 17:24
Antworten mit Zitat
Benutzer-Profile anzeigen
hallo

ich habe einen animierten character mit sequenzen. (zb laufen, stehen, langsam gehen)

wie soll man die animationen sinvoll aufrufen?
if keydown(key)
animate(player),1,1,seq
endif

geht ja leider nicht da sie jetzt immer von neuem gestartet wird...

aMul

Sieger des Minimalist Compo 01/13

BeitragMi, März 28, 2007 17:43
Antworten mit Zitat
Benutzer-Profile anzeigen
Du könntest immer die aktuelle Animation in einer Variable speichern und nur dann Animate aufrufen wenn die Variable sich ändert.
Beispiel-Code: [AUSKLAPPEN]
If KeyDown(X)
   Animation = 1
ElseIf KeyDown(Y) Then
   Animation = 2
Else
   Animation = -1
EndIf

If Animation <> OldAnimation
   If Animation = -1
      Animate Player, 0
   Else
      Animate Player, 1, 1, Animation
   EndIf
   OldAnimation = Animation
EndIf


Sollte so funktionieren.
Panic Pong - ultimate action mashup of Pong and Breakout <= aktives Spiele-Projekt, Downloads mit vielen bunten Farben!
advASCIIdraw - the advanced ASCII art program <= aktives nicht-Spiele-Projekt, must-have für ASCII/roguelike/dungeon-crawler fans!
Alter BB-Kram: ThroughTheAsteroidBelt - mit Quelltext! | RGB-Palette in 32²-Textur / Farbige Beleuchtung mit Dot3 | Stereoskopie in Blitz3D | Teleport-Animation Screensaver
 

Dobbi16

BeitragSa, März 31, 2007 1:19
Antworten mit Zitat
Benutzer-Profile anzeigen
Eine andere Möglichkeit ist vor deinem Animate(player),0,0,seq abzufragen, ob genau die Animationssequenz schon läuft.

Arrow If AnimSeq(player) <> seq Then Animate(player),0,0,seq

Allerdings wird hier die vorige Animation natürlich so oder so abgebrochen. Wenn du ein "intelligentes" System willst, welches Prioritäten berücksichtigt, sprich z.B. die Kampfanimation ist immer wichtiger als die Laufanimation und soll daher auch nicht unterbrochen werden, wenn du anfängst zu laufen, dann solltest du schon solch ein System wie aMul vorgeschlagen hat verwenden, weil du in der If-Anweisung vorher dann gleich die Prioritäten übersichtlich festlegen kannst.
Projekte:
NAME1 (= unnamend Razz ):
Modelling 5%
Programm 15%
Interface 40%
3D-Interaktionsbereich 5%
Datenaustausch lokaler Server - Client 10%

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group