improved kinematic motion, improved demos for kinematic motion
This commit is contained in:
parent
9d6a523bcb
commit
802c0a5cd9
Binary file not shown.
After Width: | Height: | Size: 6.0 KiB |
Binary file not shown.
Binary file not shown.
After Width: | Height: | Size: 534 B |
|
@ -21,6 +21,8 @@ const STOP_FORCE = 1300
|
|||
const JUMP_SPEED = 200
|
||||
const JUMP_MAX_AIRBORNE_TIME=0.2
|
||||
|
||||
const SLIDE_STOP_VELOCITY=1.0 #one pixel per second
|
||||
const SLIDE_STOP_MIN_TRAVEL=1.0 #one pixel
|
||||
var velocity = Vector2()
|
||||
var on_air_time=100
|
||||
var jumping=false
|
||||
|
@ -86,16 +88,29 @@ func _fixed_process(delta):
|
|||
#char is on floor
|
||||
on_air_time=0
|
||||
floor_velocity=get_collider_velocity()
|
||||
#velocity.y=0
|
||||
|
||||
#But we were moving and our motion was interrupted,
|
||||
#so try to complete the motion by "sliding"
|
||||
#by the normal
|
||||
motion = n.slide(motion)
|
||||
velocity = n.slide(velocity)
|
||||
|
||||
#then move again
|
||||
move(motion)
|
||||
|
||||
if (on_air_time==0 and force.x==0 and get_travel().length() < SLIDE_STOP_MIN_TRAVEL and abs(velocity.x) < SLIDE_STOP_VELOCITY and get_collider_velocity()==Vector2()):
|
||||
#Since this formula will always slide the character around,
|
||||
#a special case must be considered to to stop it from moving
|
||||
#if standing on an inclined floor. Conditions are:
|
||||
# 1) Standin on floor (on_air_time==0)
|
||||
# 2) Did not move more than one pixel (get_travel().length() < SLIDE_STOP_MIN_TRAVEL)
|
||||
# 3) Not moving horizontally (abs(velocity.x) < SLIDE_STOP_VELOCITY)
|
||||
# 4) Collider is not moving
|
||||
|
||||
revert_motion()
|
||||
velocity.y=0.0
|
||||
|
||||
else:
|
||||
#For every other case of motion,our motion was interrupted.
|
||||
#Try to complete the motion by "sliding"
|
||||
#by the normal
|
||||
|
||||
motion = n.slide(motion)
|
||||
velocity = n.slide(velocity)
|
||||
#then move again
|
||||
move(motion)
|
||||
|
||||
if (floor_velocity!=Vector2()):
|
||||
#if floor moves, move with floor
|
||||
|
|
Loading…
Reference in New Issue