Laufen und danach stehen bleiben (Animation)

Übersicht BlitzBasic Blitz3D

Neue Antwort erstellen

ToeB

Betreff: Laufen und danach stehen bleiben (Animation)

BeitragFr, Jan 04, 2008 19:10
Antworten mit Zitat
Benutzer-Profile anzeigen
Also... Ich hab mir eine Figur gemacht, die Laufen bzw. stehen kann.
Ich hab alles als *.b3d expotiert und mit ExtractAnimSeq() in die einezelen Sequenzen unterteilt. Also Seq. 0 ist stehen und Seq. 1-5 ist laufen.

Jetzt sieht mein code Folgendermaßen aus :

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

Global c = CreateCamera()

Global man = LoadAnimMesh("Man B3D.b3d")

PositionEntity man,0,0,100

steh = ExtractAnimSeq(man,0,0)
lauf = ExtractAnimSeq(man,1,5)

Global Anim_Seq = 0


Repeat
If KeyDown(203) Then TurnEntity man,0,2,0
If KeyDown(205) Then TurnEntity man,0,-2,0
If KeyDown(200) And Anim_Seq = 0 Then
Anim_Seq = 1:Animate man,1,0.1,lauf,30
EndIf
If Anim_Seq = 1
If Not KeyDown(200) Then
Animate man,1,0.1,steh,30
Anim_seq = 0
EndIf
EndIf
UpdateWorld()
RenderWorld()
Text 1,1,"Sequenz : "+AnimSeq(man)
Flip
Cls
Until KeyHit(1)
End


Wenn ich jetzt aber Die Pfeiltaset "oben" loslasse, dann bleibt der genau so wie der vorher war !
Warum ist das so ? Wie kann ich das Ändern, dass der steht wenn ich diePfeiltaset loslasse ?

thx und mfg Crack93
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art
SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek
Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt!

Willi die Rübe

BeitragFr, Jan 04, 2008 20:17
Antworten mit Zitat
Benutzer-Profile anzeigen
Du hast ein paar umständliche Ifs eingebaut.
So hätte ich das jetzt gemacht:

Code: [AUSKLAPPEN]

taste = KeyDown(200)

Select AnimSeq(man)
   Case steh
      if taste = TRUE then anim_seq=lauf
   Case lauf
      if taste = FALSE then anim_seq=steh
   Default
      Anim_Seq=steh
End Select


if AnimSeq(man)<>anim_seq then Animate man,1,0.1,anim_seq,30


Edit: Habe einen Fehler korrigiert, so kann es nicht funktionieren.


Edit2: Aber dein Code müsste theoretisch auch funktionieren. Mach mal eine Stehanimation hinter die Laufanimation und schreibe dann lauf=ExtractAnimSeq(man,6,6).

Edit3: Achja und das mein Code läuft, musst du anim_seq mit 1 initialisieren anstatt mit 0 oder du ergänzt in der Select Prozedur eine Default Anweisung(würde ich eigentlich immer bei Select empfehlen):

Code: [AUSKLAPPEN]
   Select AnimSeq(man)
      Case steh
         If taste = True Then Anim_Seq=lauf
      Case lauf
         If taste = False Then Anim_Seq=steh
      Default
         Anim_Seq=steh
   End Select


Edit4: Habs oben ergänzt.
Ich habe keine Lösung, aber ich bewundere das Problem.
Tehadon
Q6600, MSI Neo2-FR, 4GB Ram, nVidia 7800 GTX

At the Farewell Party visit: MySpace | Homepage
  • Zuletzt bearbeitet von Willi die Rübe am Fr, Jan 04, 2008 20:50, insgesamt 4-mal bearbeitet

ToeB

BeitragFr, Jan 04, 2008 20:29
Antworten mit Zitat
Benutzer-Profile anzeigen
Thx ! Werds ausprobieren, danke Very Happy !

mfg Crack93
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art
SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek
Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt!

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group