recursivesquare/scripts/box.gd
2024-11-14 13:58:15 +01:00

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