steigende Animationsgeschwindikeit
Übersicht

![]() |
ChriseBetreff: steigende Animationsgeschwindikeit |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 ![]() Danke! |
||
![]() |
Arrangemonk |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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! ![]() Ich warte jetzt einfach noch ein paar Antworten ab, vielleicht hat ja noch jemand anderes eine ideale Idee. |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group