Pressing Buttons to Animate
Blitz3D Forums/Blitz3D Beginners Area/Pressing Buttons to Animate
| ||
I was having trouble with my animation. I wanted to make it so that when the left or right key is pressed, the walking animation starts (as in a normal game) and when it is not pressed, the animation stops. How do I do that with my code below? Thanks!
Graphics3D 800,600
SetBuffer BackBuffer()
camera=CreateCamera()
CameraViewport camera,0,0,800,600
light=CreateLight()
man= LoadAnimMesh ("Marty.b3d" )
PositionEntity man,0,-330,600
ScaleEntity man, 3, 3, 3
RotateEntity man,0,0,0
While Not KeyHit(1)
If KeyDown(203) Then
MoveEntity man, -3,0,0
Animate man,1,0.5,0
End If
If KeyDown(205) Then
MoveEntity man, 3,0,0
Animate man,1,0.5,0
End If
UpdateWorld
RenderWorld
Text 320,500,"An Animated MD2 Demo"
Flip
Wend
End
|
| ||
untested but I think this logic should work:If KeyDown(203) Then MoveEntity man, -3,0,0 Animate man,1,0.5,0 ElseIf KeyDown(205) Then MoveEntity man, 3,0,0 Animate man,1,0.5,0 Else Animate man,0 End If |
| ||
| Skidracer, I copied and pasted the code that you sent, but it's not working correctly. |
| ||
| here is an extract from a code i worked on a few months ago (all worked well) : |
| ||
| The code posted by skidracer should work for B3D model. At the bottom of your code you wrote "An Animated MD2 Demo", if your model is an MD2 you'll have to use the command AnimateMD2, wich is a little different. |
| ||
| Ok, I got my animation ALMOST to where I want it. Thanks for the info Skyricer, I got it to work. And Flanker, lol, the "An Animated MD2 Demo" was something that I forgot to take out. I copied and pasted some of this code. Remi, thanks for the help. I'm kind of a newbie to programming in Blitz 3D, thus I was trying to learn more about what you wrote in maybe small steps. But, what do you think about my code below? I got my walking animation to work (after a lot of wrestling with the codes) and the walking animation works with all the buttons that I wanted. That is, when I press the arrow keys, my character walks. But, now I'm wondering why isn't my punch animation playing through? When I hit the "A" key, it only plays the first animation frame, but stops there. Thus, what should I add to my code to get it to play the full animation when the A key is pressed. Here's the code that I came up with. By the way, I put both my walk animation and punch animation all on the same strip. Thanks
Graphics3D 800,600
SetBuffer BackBuffer()
camera=CreateCamera()
CameraViewport camera,0,0,800,600
light=CreateLight()
man = LoadAnimMesh ("Henry2.b3d")
ScaleEntity man, 3, 3, 3
RotateEntity man,0,0,0
PositionEntity man, frames -0,-330,600
walking = ExtractAnimSeq(man, 3,30)
;This is the punch animation that I added.
;The beginning of this clip starts at frame 49
;on the filmstrip.
punching = ExtractAnimSeq(man, 49,99)
While Not KeyHit(1)
If KeyDown(200) Or KeyDown(208) Or KeyDown(203) Or KeyDown(205) Then
Else
Animate man, 1,0.5, walking
EndIf
If KeyDown(30) Then
;this is the part that I needed help with specifically. The punch animation
;only plays the first frame when I press the A key. But, I want to play the full animation here.
Animate man, 1, 1, punching
Else
EndIf
;----------------------Everything below this line is fine for now. Thanks!------------------------------------------------------
If KeyDown(200) MoveEntity man, 0,3,0
If KeyDown(205) MoveEntity man, 3,0,0
If KeyDown(208) MoveEntity man, 0,-3,0
If KeyDown(203) MoveEntity man, -3,0,0
UpdateWorld
RenderWorld
Flip
Wend
End
|
| ||
| An punching animation should start on Keydown() like the walking animation. But then it should run independent from the Key status. So try this: PunchIsRunning knows three status: 0="No Punch", 1="Start Punch" and 2="Punch already running"
Global PunchIsRunning=0
Const ONE_SHOT=3
....
If PunchIsRunning=1 ;animation starts
Animate man, ONE_SHOT, 1, punching
PunchIsRunning=2
ElseIf PunchIsRunning=2 ; animation already running
If AnimationTime=99
PunchIsRunning=0 ;reset,when ready
Endif
ElseIf KeyDown(30) Then
PunchIsRunning=1
EndIf
|