mirror of
https://github.com/JHDev2006/Super-Mario-Bros.-Remastered-Public.git
synced 2025-10-22 15:38:14 +00:00
40 lines
1.1 KiB
GDScript
40 lines
1.1 KiB
GDScript
extends Enemy
|
|
const SPIKE_BALL = preload("uid://c7il83r4ab05d")
|
|
|
|
@export var can_move := false
|
|
|
|
func _ready() -> void:
|
|
$ThrowTimer.start()
|
|
if can_move:
|
|
$TurnTimer.start()
|
|
|
|
func _physics_process(delta: float) -> void:
|
|
if can_move:
|
|
$Movement.handle_movement(delta)
|
|
else:
|
|
$StaticMovement.handle_movement(delta)
|
|
var target_player = get_tree().get_first_node_in_group("Players")
|
|
var target_direction = sign(target_player.global_position.x - global_position.x)
|
|
if target_direction != 0:
|
|
direction = target_direction
|
|
|
|
func throw_ball() -> void:
|
|
$Movement.can_move = false
|
|
%Animations.play("BallSpawn")
|
|
await %Animations.animation_finished
|
|
summon_ball()
|
|
%Animations.play("Idle")
|
|
$Movement.can_move = true
|
|
|
|
func summon_ball() -> void:
|
|
var ball = SPIKE_BALL.instantiate()
|
|
ball.global_position = %Ball.global_position
|
|
add_sibling(ball)
|
|
ball.velocity.x = 100 * direction
|
|
|
|
|
|
func on_timeout() -> void:
|
|
if not $Movement.can_move: return
|
|
var target_player = get_tree().get_first_node_in_group("Players")
|
|
direction = sign(target_player.global_position.x - global_position.x)
|