steigende Animationsgeschwindikeit

Übersicht BlitzBasic Blitz3D

Neue Antwort erstellen

Chrise

Betreff: steigende Animationsgeschwindikeit

BeitragSa, Nov 15, 2008 1:47
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich habe mal gesucht, aber nichts gefunden, was mein Problem beschreiben, geschweige denn lösen würde.
Es geht allgemein um B3D Animation.
Ich habe ein Wesen in blender erstellt, richtig exportiert und die Animationen funktionieren wunderbar.
Ich habe vorerst drei Stufen: Stehen, Gehen und Sprinten.

So jetzt kommt aber erst das eigentliche Problem bei dem ich jetzt schon den ganzen Abend davor sitze und ums "Verrecken" nicht drauf komme, wie ich das machen soll, aber schon zich Varianten ausprobiert, aber keine Idee scheint die richtige Lösung zu sein.

Ich will, dass wenn man die Vorwärtstaste drückt, das Wesen vom Stehen beginnt zu gehen, aber das in gemäßigter Geschwindigkeit. Mit zunehmender Geschwindigkeit (gesteuert durch eine Variable, das dürfte wohl jedem klar sein ^^), soll sich die Animation des Wesens ebenso schneller abspielen und ab einer gewissen Stufe eben in die "Sprinten-Animation" wechseln und das selbe Spiel praktisch wieder: je länger man auf der Taste bleibt, desto schneller, eben bis zu einem gewünschten Limit.

Ich habe keinen blassen Schimmer und alle Versuchscodes wären nur blanker Schwachsinn.
Das einzige was ich an Code zeigen kann, wäre das hier, aber ob das hilft, weiß ich genauso wenig:

Code: [AUSKLAPPEN]
frames_per_second = CreateTimer(30)
Graphics3D 800,600,0,2
SetBuffer BackBuffer()
camera = CreateCamera()

main_light = CreateLight()
LightRange main_light, 50

exist_1 = LoadAnimMesh("arikor.b3d")
PositionEntity camera, 0,3,-10
PointEntity camera, exist_1

;Stehen 1
ExtractAnimSeq(exist_1,4,31)
;Gehen 2
ExtractAnimSeq(exist_1,34,54)
;Laufen 3
ExtractAnimSeq(exist_1,60,77)

speed# = 0
mode = 0

sequence = 1
Animate exist_1,1,0.2,sequence,0

FlushMouse
FlushKeys
While Not KeyHit(1)
   If KeyDown(200) Then speed# = speed# + 0.025
   If (Not KeyDown(200)) And (speed# > 0) Then speed# = speed# - 0.025

        ;Anfang des letzten Verzweifelten Versuches:

   If KeyHit(200) Then sequence = 2 : Animate exist_1,0,1,0,0
   
   If KeyHit(200) Then
      sequence = 2
      frames# = (AnimTime(exist_1) + 1) Mod AnimLength(exist_1)
      Animate exist_1,1,speed#,sequence,0
   EndIf
   
   If KeyDown(203) Then TurnEntity exist_1,0,3,0
   If KeyDown(205) Then TurnEntity exist_1,0,-3,0
   
       ;Letzter Verzweifelter Versuch zuEnde

   UpdateWorld()
   RenderWorld()
   Text 0, 0, "Animating:" + Animating(exist_1)
   Text 0, 20, "AnimLength:" + AnimLength(exist_1)
   Text 0, 40, "AnimSeq:" + AnimSeq(exist_1)
   Text 0, 60, "AnimTime:" + AnimTime(exist_1)
   Text 50,80,speed#
   WaitTimer frames_per_second
   Flip
Wend
End



Entweder mein Wesen bleibt komplett "Eingefroren" oder unbeschreiblich behindert aussehende Übergänge zwischen den Squenzen konnte ich bisher erzielen....
ich hoffe ich konnte wenigstens erklären, was mein Problem ist und hoffe, das mir jemand helfen kann Smile

Danke!

Arrangemonk

BeitragSa, Nov 15, 2008 2:07
Antworten mit Zitat
Benutzer-Profile anzeigen
du könntest das gehen abrupt in sprinten übergehen lassen oder mehrere zwischenanimationen machen
bei professionellen spielen wie devil may cry gibts auch nur 2 fortbewegungsgeschwindigkeiten
aber wie gesagt mehrere stufen zwischen gehen und sprinten dürfts tuhen
ingeneur

Chrise

BeitragSa, Nov 15, 2008 2:11
Antworten mit Zitat
Benutzer-Profile anzeigen
Huihuiuui das wird aber dann schätz ich mal ein Haufen Arbeit....
Ansich geht ja auch mit Übergangsframes zur nächsten Animation aber es sieht eben trotzdem lange nicht so flüssig aus, wie wenn es eben die selbe Animation ist und einfach langsam schneller wird.

Naja notfalls bleibt mir, wie du sagtest nichts anderes übrig als mehrere zwischen Animationen zu erstellen.
Danke aufjedenfall schonmal für deinen Vorschlag! Smile

Ich warte jetzt einfach noch ein paar Antworten ab, vielleicht hat ja noch jemand anderes eine ideale Idee.

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group