2015-02-02 22:08:57 +00:00
|
|
|
|
|
|
|
extends KinematicBody2D
|
|
|
|
|
|
|
|
# This is a simple collision demo showing how
|
2015-11-21 15:13:43 +00:00
|
|
|
# the kinematic controller works.
|
2015-02-02 22:08:57 +00:00
|
|
|
# move() will allow to move the node, and will
|
2015-11-21 15:13:43 +00:00
|
|
|
# always move it to a non-colliding spot,
|
2015-02-02 22:08:57 +00:00
|
|
|
# as long as it starts from a non-colliding spot too.
|
|
|
|
|
2015-11-21 15:13:43 +00:00
|
|
|
# Member variables
|
|
|
|
const MOTION_SPEED = 160 # Pixels/second
|
2015-02-02 22:08:57 +00:00
|
|
|
|
|
|
|
|
|
|
|
func _fixed_process(delta):
|
|
|
|
var motion = Vector2()
|
|
|
|
|
|
|
|
if (Input.is_action_pressed("move_up")):
|
2015-11-21 15:13:43 +00:00
|
|
|
motion += Vector2(0, -1)
|
2015-02-02 22:08:57 +00:00
|
|
|
if (Input.is_action_pressed("move_bottom")):
|
2015-11-21 15:13:43 +00:00
|
|
|
motion += Vector2(0, 1)
|
2015-02-02 22:08:57 +00:00
|
|
|
if (Input.is_action_pressed("move_left")):
|
2015-11-21 15:13:43 +00:00
|
|
|
motion += Vector2(-1, 0)
|
2015-02-02 22:08:57 +00:00
|
|
|
if (Input.is_action_pressed("move_right")):
|
2015-11-21 15:13:43 +00:00
|
|
|
motion += Vector2(1, 0)
|
2015-02-02 22:08:57 +00:00
|
|
|
|
2015-11-21 15:13:43 +00:00
|
|
|
motion = motion.normalized()*MOTION_SPEED*delta
|
2015-02-02 22:08:57 +00:00
|
|
|
motion = move(motion)
|
|
|
|
|
2015-11-21 15:13:43 +00:00
|
|
|
# Make character slide nicely through the world
|
2015-02-02 22:08:57 +00:00
|
|
|
var slide_attempts = 4
|
2015-11-21 15:13:43 +00:00
|
|
|
while(is_colliding() and slide_attempts > 0):
|
2015-02-02 22:08:57 +00:00
|
|
|
motion = get_collision_normal().slide(motion)
|
2015-11-21 15:13:43 +00:00
|
|
|
motion = move(motion)
|
|
|
|
slide_attempts -= 1
|
|
|
|
|
2015-02-02 22:08:57 +00:00
|
|
|
|
|
|
|
func _ready():
|
|
|
|
set_fixed_process(true)
|