From f27937e6e9b6a7146dd09fc711d2d293ecf5abbf Mon Sep 17 00:00:00 2001 From: Daniel Weipert Date: Sun, 14 Apr 2024 21:49:20 +0200 Subject: update --- Scenes/Entities/Enemies/Components/Movement.gd | 56 ++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 Scenes/Entities/Enemies/Components/Movement.gd (limited to 'Scenes/Entities/Enemies/Components/Movement.gd') diff --git a/Scenes/Entities/Enemies/Components/Movement.gd b/Scenes/Entities/Enemies/Components/Movement.gd new file mode 100644 index 0000000..0b30820 --- /dev/null +++ b/Scenes/Entities/Enemies/Components/Movement.gd @@ -0,0 +1,56 @@ +extends Node + +signal direction_changed + +@export_node_path("CharacterBody2D") var entityPath: NodePath +@onready var entity: CharacterBody2D = get_node(entityPath) + +@export_node_path("AnimatedSprite2D") var spritePath: NodePath +@onready var sprite: AnimatedSprite2D = get_node(spritePath) + +@export var SPEED: int + +const DIRECTIONS = [Vector2.UP, Vector2.RIGHT, Vector2.DOWN, Vector2.LEFT] +var CURRENT_DIRECTION = Vector2.UP + +@onready var MovementTimer: Timer = Timer.new() + + +func _ready(): + MovementTimer.wait_time = 3.0 + MovementTimer.autostart = true + MovementTimer.connect("timeout", Callable(_on_movement_timer_timeout)) + add_child(MovementTimer) + + +func physics_process(delta): + if CURRENT_DIRECTION == Vector2.UP: + entity.velocity.y -= SPEED + sprite.play("up") + elif CURRENT_DIRECTION == Vector2.DOWN: + entity.velocity.y += SPEED + sprite.play("down") + elif CURRENT_DIRECTION == Vector2.LEFT: + entity.velocity.x -= SPEED + sprite.play("left") + elif CURRENT_DIRECTION == Vector2.RIGHT: + entity.velocity.x += SPEED + sprite.play("right") + + var collision = entity.move_and_collide(entity.velocity * delta) + entity.velocity = entity.velocity.lerp(Vector2(0, 0), 1) + + return collision + + +func _on_movement_timer_timeout(): + var directions = DIRECTIONS.duplicate() + + directions.remove_at(directions.find(CURRENT_DIRECTION)) + directions.shuffle() + + CURRENT_DIRECTION = directions[0] + + emit_signal("direction_changed", CURRENT_DIRECTION) + + MovementTimer.start() -- cgit v1.2.3