Mehrere Animationen

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

N0X

Betreff: Mehrere Animationen

BeitragSa, Jan 02, 2010 0:23
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi!
Ich habe mir das verbreitete Zwerg Modell heruntergeladen und versucht die Animationen abzuspielen.
Wenn nichts gedrückt wird die Idle Animation, wenn KeyDown(17) dann nach vorne laufen und wenn KeyDown(31) dann rückwärts laufen.
Soweit sogut, ich habe alle Ani's geladen aber es wird, egal ob Tastendruck oder nicht, nur die Idle Animation abgespielt.
Woran liegt das? Kann man den Code noch optimieren?

Code: [AUSKLAPPEN]
Graphics3D 800,600,32,2
SetBuffer BackBuffer()

Global plySpeed=1

;ENTITYS
Global player  = LoadAnimMesh("b3d/dwarf1.b3d")
Global cam     = CreateCamera(player)

ExtractAnimSeq player,2,14
ExtractAnimSeq player,292,325

While Not KeyHit(1)
   move()

   RenderWorld()
   UpdateWorld()
   Flip
Wend
End

Function move()
   If KeyDown(17) Then
      MoveEntity player,0,0,plySpeed
      If Not Animating(player) Then
         Animate player,1,.2,1,1
      EndIf
   EndIf
   
   If KeyDown(31) Then
      MoveEntity player,0,0,-plySpeed
      If Not Animating(player) Then
         Animate player,1,-0.2,1,1
      EndIf
   EndIf
   
   If Not Animating(player)
      Animate player,1,.2,2,1
   EndIf
   
   ;If Not (KeyDown(17) Or KeyDown(31)) Then
   ;   If Not Animating(player)
   ;      Animate player,1,.2,2,1
   ;   EndIf
   ;EndIf
End Function


Mfg,
N0X
Projekte: |Tibario| http://www.blitzforum.de/worklogs/325/ | 5%

Tankbuster

BeitragSa, Jan 02, 2010 0:27
Antworten mit Zitat
Benutzer-Profile anzeigen
Du verwendest ExtractAnimSeq . Dabei wird der Animation automatisch ein Index zugewiesen, der auch von der Funktion zurückgegeben wird!
Zitat:
ExtractAnimSeq player,2,14 ;<---- AnimationsIndex = 1
ExtractAnimSeq player,292,325 ;<---- AnimationsIndex = 2


Zitat:
Animate player,1,.2,1,1 ;<---- AnimationsIndex = 1
Animate player,1,.2,1,2 ;<---- AnimationsIndex = 2


Bei deinen Beispielen verwendest du nur den Index 1, also immer nur eine Animation.

Du kannst es auch elegant so machen:
Zitat:

laufen=ExtractAnimSeq player,2,14
schlagen=ExtractAnimSeq player,15,30
Animate player,1,.2,1,laufen
Animate player,1,.2,1,schlagen


mfg
Twitter
Download Jewel Snake!
Windows|Android

N0X

BeitragSa, Jan 02, 2010 0:32
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich dachte der letzte Parameter dient zum Übergang zwischen 2 Animationen?
Projekte: |Tibario| http://www.blitzforum.de/worklogs/325/ | 5%

Tankbuster

BeitragSa, Jan 02, 2010 0:40
Antworten mit Zitat
Benutzer-Profile anzeigen
Ah Schuldigung. Ja, du hast recht, ich habe mich um ienen Parameter verzählt.

Es liegt einfach daran, dass
Zitat:
Animating(player)
nie 0 sein kann, weil die Animation immer wieder geloopt wird. Da brauchst du noch eine zusätzliche Abfrage Wink
Twitter
Download Jewel Snake!
Windows|Android

N0X

BeitragSa, Jan 02, 2010 0:47
Antworten mit Zitat
Benutzer-Profile anzeigen
Hm, verstanden, aber ich weiß leider nicht wie ich das machen könnte.
Kannst du mir dabei helfen?

//EDIT:
Ich hatte das Problem schonmal, hab es auch lösen können, weiß nur leider nicht mehr wie ich es damals gelöst habe.
Projekte: |Tibario| http://www.blitzforum.de/worklogs/325/ | 5%

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group