ahhgghh

Blitz3D Forums/Blitz3D Beginners Area/ahhgghh

More frustration here.
using extract animseq

Player=LoadAnimMesh("models\Pearman.b3d")
ExtractAnimSeq (Player,0,18);sequence 1 ;walk
ExtractAnimSeq (Player,19,20);sequence 2;still
ExtractAnimSeq (Player,20,38);sequence 3;jump

but when I use this on the walk ( below)

While Not KeyHit(1)

If KeyDown(200)Then
MoveEntity Player,0,0,1
If AnimTime(Player) <0 Or AnimTime(Player) > 18 Then Animate Player,1,.5,1 ;( this means loopedanim, anim speed, sequence)

EndIf
EndIf



What happens it only plays the first frame of the walk cycle.
Can someone please help me on this. My animations are loaded properly, so the sequences are there.
BTW I don't really understand this line

If AnimTime(Player) <0 Or AnimTime(Player) > 18 Then

Off the top of my head try

If KeyDown(200)
MoveEntity Player,0,0,1 
If Not Animating(Player) Then Animate Player,3,.5,1 ;( this means one-shotanim, anim speed, sequence) 
EndIf



If AnimTime(Player) <0 Or AnimTime(Player) > 18 Then



This is checking if the current animation frame is less than zero !!!??? or greater than 18.
In your above example this will never work - the current frame will never be less than 0 and it will never be more than 18 because it loops back to 0. The walk animation goes from 0 to 18.

give the extracted anims handles like so

Player=LoadAnimMesh("models\Pearman.b3d")
walk = ExtractAnimSeq (Player,0,18);sequence 1 ;walk
still = ExtractAnimSeq (Player,19,20);sequence 2;still
run = ExtractAnimSeq (Player,20,38);sequence 3;jump

If KeyDown(200)Then
MoveEntity Player,0,0,1
If not animseq(player)=walk
Animate Player,1,.5,walk

EndIf
EndIf

That did work with my simple camera( thanks), but with the more advanced setup I borrowed for castle demo, it still won't work.( no sweat right now though)
Whats more worrying is the compexity fo trying to get the
tweens working and other glitches.For instance I would need to have a default pose, so if the character is not walking or doing anything else , he would be using this pose, then return to idle.
It looks a bit crap also if at full stride the characer suddenly returns to default pose with no tweeening.
Are there any easy to undertand examples of this anywhere, cheers

One thing that helps is specifying a transition value after the sequence. So, "Animate Player,1,[speed],still,10" should move smoothly to the idle animation (you may need to change 10 to whatever looks best).

what i do and find best is create an animation function ie

Function AnimationPlayer()

if not animseq(char\model)=char\Anim

animate char\model,char\AnimMode,char\AnimSpeed,char\Anim, char\AnimTw

endif

end function

then create seperate functions for each animation ie

Function ActionWalk()

if keydown(Walk_Key)

char\Anim = char\walk
char\AnimMode = 1
char\AnimSpeed# = .5
char\AnimTw# = 1

endif

end function

Function ActionIdle()

if keydown(Walk_Key)

char\Anim = char\idle
char\AnimMode = 1
char\AnimSpeed# = .5
char\AnimTw# = 1

endif

end function

simple example but keeps it simple in the long run

Thaks sinu I will have a look through this now.

Sinu , going back to that first expample you gave , that didn't work for some odd reason. player moves forward , but animation doesn't play

Player=LoadAnimMesh("models\Pearman.b3d")
walk = ExtractAnimSeq (Player,0,18);sequence 1 ;walk

If KeyDown(200)Then
MoveEntity Player,0,0,1
If not animseq(player)=walk
Animate Player,1,.5,walk
EndIf
EndIf

Though shamblers example did work, I was just wondering why
as they both mean the same thing ie walk is the sequence

goddamn i worked it out, must have been a fluke.


While Not KeyHit(1)

If KeyDown(200);forward
MoveEntity Player,0,0,1
If Animating(Player)=walk Then Animate Player,3,.5,1


EndIf

If KeyDown(208);back

MoveEntity Player,0,0,-1
If Animating(Player)=walk Then Animate Player,3,-.5,1

EndIf


If KeyDown(30);jump

MoveEntity Player,0,1,0
If Animating(Player)=jump Then Animate Player,3,-.5,3

EndIf

If KeyDown(203) Then TurnEntity Player,0,2,0
If KeyDown(205) Then TurnEntity Player,0,-2,0

If Not Animating (Player) Then Animate Player,3,0,2,5

By applying the 'tween'on the still sequence, it tweens between all other sequences. Looks ok. just have to work out the jump now.