Player Movement help needed
Blitz3D Forums/Blitz3D Beginners Area/Player Movement help needed
| ||
| Hi. I have been using bb now for about 2 days. Im plodding on ok. I need help with this code. If its a mess im sorry. iv'e only just started. The problem Im having is with player movement. I want the player to be able to move left and right and have a different anim for each direction. this is wot I have come up with so far. Can anyone give any suggestions on a better way to accomplish this. heres my code. Graphics 640,480 SetBuffer BackBuffer() px = 200 py = 200 pspeed = 1 pframe = 0 time = MilliSecs() ;load the player image p = LoadAnimImage("image1.bmp",32,32,0,3) While Not KeyHit(1) Cls If MilliSecs()> time + 100 time = MilliSecs() pframe = (pframe + 1) Mod 3 EndIf If pframe = 2 pframe = 0 End If If KeyDown(205) DrawImage p,px,py,pframe px = px + 1 Else If KeyDown(203) px = px -1 DrawImage p,px,py,2 pframe = 2 +1 If pframe = 3 pframe = 3 EndIf Else DrawImage p,px,py End If Flip Wend End |
| ||
| well firstly create an animation strip with the left and right animation in it. say 3 frames from moving right and 3 frames for moving left. move left frames: 0-2 move right frames:3-5 then have a direction variable dir=0; character is moving left dir=1; character is moving right then have a variable to keep track of the frames frame=0
Graphics 800,600
SetBuffer BackBuffer()
player=LoadAnimImage("player.png",24,24,0,6)
dir=0; direction the player is going
frame=0; what frame of animation the player is on
speed=1; the walking speed of the player
While Not KeyHit(1)
Cls
If KeyDown(203) Then
If dir=3 Then; if player was moving right then change his direction
frame=0; set the frame back to zero
dir=0; set direction to left
Else
frame=frame+1
If frame=3 Then frame=0;if frame goes past 2 then reset to 0
x=x-speed
End If
ElseIf KeyDown(205) Then
If dir=0 Then; if player was moving left then change his direction
frame=0; set the frame back to zero
dir=3; set direction to right
Else
frame=frame+1
If frame=3 Then frame=0;if frame goes past 2 then reset to 0
x=x+speed
End If
Else
If dir=0 Then frame=0
If dir=3 Then frame=0
End If
DrawImage player,x,y,dir+frame
Delay 200
Flip
Wend
Endthe dir variable is used as a marker for which frame is in use and to determine which way the man is player is facing hope this helps some. there's alot better ppl out there that could prob explain this better but i hope it helps none the less. if u wanna run this mind you need a png image with 6 frames, each at 24x24 :D |