AnimSpeed# ( entity )
Parameters
| entity - entity handle |
Description
|
Returns the playback speed of an entity current animation. The value is in animation frames per UpdateWorld step, the same units Animate and SetAnimSpeed use. Reading it back lets you nudge a speed relative to whatever it is now - SetAnimSpeed e,AnimSpeed(e)*1.5 to wind a run cycle up - without having to track the number yourself. Two things to expect. Ping-pong playback flips the sign when the animation reverses, so the value goes negative on the backwards leg; take Abs() if you only care about the rate. And during a true crossfade this reports the speed of the incoming clip, the one being blended towards. A speed of 0 means playback is paused - the entity is still on its sequence and will carry on when you give it a non-zero speed again. See also: SetAnimSpeed, Animate, AnimTime, Animating, CrossFadeAnim. |
Example
; AnimSpeed Example ; ----------------- Graphics3D 640,480,0,2 SetBuffer BackBuffer() camera=CreateCamera() PositionEntity camera,0,2,-6 RotateEntity camera,12,0,0 light=CreateLight() RotateEntity light,45,45,0 ; A grassy paddock for the fox to roam ground=CreatePlane() EntityTexture ground,LoadTexture("media/MossyGround.BMP") ; Load the rigged fox; it has the named clips "Survey", "Walk" and "Run" fox=LoadAnimMesh("../../../samples/glTF/assets/Fox/Fox.glb") If fox=0 Then RuntimeError "Could not load Fox.glb: "+ModelLoadError() ; Shrink the fox to game scale (the file is modelled about 100 units tall) FitMesh fox,-0.8,0,-0.8,1.6,1.6,1.6,True ; Play the walk clip ping-pong so it reverses at each end walk=FindAnimSeq(fox,"Walk") CrossFadeAnim fox,walk,0,2 speed#=1 While Not KeyDown(1) ; Change the playback speed with [ and ] If KeyDown(26) And speed>0.1 Then speed=speed-0.01 : SetAnimSpeed fox,speed If KeyDown(27) And speed<4 Then speed=speed+0.01 : SetAnimSpeed fox,speed UpdateWorld ; Arrow keys move the camera If KeyDown(200) Then MoveEntity camera,0,0,0.1 If KeyDown(208) Then MoveEntity camera,0,0,-0.1 If KeyDown(203) Then TurnEntity camera,0,1,0 If KeyDown(205) Then TurnEntity camera,0,-1,0 RenderWorld Text 0,0,"[ / ]: change speed Arrows: camera Esc: exit" ; AnimSpeed returns the live speed; ping-pong playback flips its sign ; whenever the walk cycle reverses direction Text 0,20,"AnimSpeed(fox) = "+AnimSpeed(fox) Text 0,40,"AnimTime: "+AnimTime(fox) Flip Wend End
Index