78 lines
1.6 KiB
GDScript
78 lines
1.6 KiB
GDScript
extends StaticBody2D;
|
|
|
|
@onready var RayCastRight : RayCast2D = $RayCastRight;
|
|
@onready var RayCastDown : RayCast2D = $RayCastDown;
|
|
@onready var RayCastUp : RayCast2D = $RayCastUp;
|
|
@onready var RayCastLeft : RayCast2D = $RayCastLeft;
|
|
|
|
|
|
|
|
func go_right() -> bool:
|
|
var can_move := true;
|
|
if RayCastRight.is_colliding():
|
|
var colliding : Object = RayCastRight.get_collider();
|
|
if colliding.is_in_group("box"):
|
|
can_move = colliding.go_right();
|
|
else:
|
|
can_move = false;
|
|
|
|
if can_move:
|
|
position.x += 16;
|
|
|
|
return can_move;
|
|
|
|
|
|
func go_left() -> bool:
|
|
var can_move := true;
|
|
if RayCastLeft.is_colliding():
|
|
var colliding : Object = RayCastLeft.get_collider();
|
|
if colliding.is_in_group("box"):
|
|
can_move = colliding.go_left();
|
|
else:
|
|
can_move = false;
|
|
|
|
if can_move:
|
|
position.x -= 16;
|
|
|
|
return can_move;
|
|
|
|
func go_up() -> bool:
|
|
var can_move := true;
|
|
if RayCastUp.is_colliding():
|
|
var colliding : Object = RayCastUp.get_collider();
|
|
if colliding.is_in_group("box"):
|
|
can_move = colliding.go_up();
|
|
else:
|
|
can_move = false;
|
|
|
|
if can_move:
|
|
position.y -= 16;
|
|
|
|
return can_move;
|
|
|
|
func go_down() -> bool:
|
|
var can_move := true;
|
|
if RayCastDown.is_colliding():
|
|
var colliding : Object = RayCastDown.get_collider();
|
|
if colliding.is_in_group("box"):
|
|
can_move = colliding.go_down();
|
|
else:
|
|
can_move = false;
|
|
|
|
if can_move:
|
|
position.y += 16;
|
|
|
|
return can_move;
|
|
|
|
|
|
|
|
|
|
|
|
# Called when the node enters the scene tree for the first time.
|
|
func _ready() -> void:
|
|
pass # Replace with function body.
|
|
|
|
|
|
# Called every frame. 'delta' is the elapsed time since the previous frame.
|
|
func _process(delta: float) -> void:
|
|
pass
|