Jumping...
Blitz3D Forums/Blitz3D Beginners Area/Jumping...
| ||
| I have a game were I am trying to make a camera jump. Pretty simple right? Here's the code when I press the space bar the camera just shoots into the air then drifts back to the ground. Is there any way to make it so the camera jumps up smoothly and drifts back down? TX! |
| ||
While Not KeyDown (1)
If KeyDown( 205 )=True Then TurnEntity camera,0,-1,0
...
CameraJump()
Wend
Function CameraJump()
If KeyHit(2) Then
StartJump=1
CameraStartPos=EntityY(Camera)
Endif
If StartJump=1 then
If EntityY(Camera)< CameraStartPos+20 Then
MoveEntity Camera, 0, 0.5, 0
Else
StartJump=2
Endif
ElseIf StartJump=2 Then
If EntityY(Camera)> CameraStartPos Then
MoveEntity Camera, 0, -0.5, 0
Else
StartJump=0
Else
StartJump=2
Endif
Endif
End Function |
| ||
| Thanks! |
| ||
| copied from my tutorial... its not 3d but it is more realistic looking and it is easy to convert Hey I have seen many people ask how to make things fall like they do in real life. I can only assume they are tired of making things fall at a few pixels per second. Well here is a nifty trick that I discovered when I made my first platformer game and soon figured out I wasnt the only one that knew this. So here is how you do it step by step. 1. When you make a character or anything that will be affected by gravity give it a variable called velocity_y or vy.. whatever you want to call it Main loop 2. If the object hit the ground then velocity_y = 0 3. Add velocity_y to the y value. 4. velocity_y = velocity_y + gravity where gravity is a constant usually floating point variable. gravity should be positive in 2d and negative in 3d End of Main loop This works for 2d and 3d! to make an object jump set velocity_y to some bigish number in 3d it is positive, in 2d it is negative. simple example: Graphics 800,600,0,2 SetBuffer BackBuffer() ballx# = 200 bally# = 200 ball_velocity_y# = 0 gravity# = .1 bounce# = .5 While Not KeyDown(1) Cls ball_velocity_y# = ball_velocity_y# + gravity bally = bally + ball_velocity_y If bally# > 590 Then ball_velocity_y = -ball_velocity_y*bounce bally = 590 EndIf Oval ballx,bally,10,10 Flip Wend End this one even has bounce. set bounce to 0 to see it just stop like a normal character would. |