Godot version is 4.1
extends Node
@export var weapon_ability: PackedScene
func _ready():
$Timer.timeout.connect(on_timer_timeout)
const MAX_RANGE = 150
func on_timer_timeout():
print("do something")
var player = get_tree().get_first_node_in_group("player") as Node2D
if player == null:
return
var hoodies = get_tree().get_nodes_in_group("enemy")
hoodies = hoodies.filter(func(hoodies: Node2D):
return hoodies.global_position.distance_squared_to(player.global_position) < pow(MAX_RANGE, 2)
return false
)
if hoodies.size() == 0:
return
hoodies.sort_custom(func(a: Node2D, b: Node2D):
var a_distance = a.global_position.distance_squared_to(player.global_position)
var b_distance = b.global_position.distance_squared_to(player.global_position)
return a_distance < b_distance
)
var baton_instance = weapon_ability.instantiate() as Node2D
player.get_parent().add_child(baton_instance)
baton_instance.global_position = hoodies[0].global_position
Question
How to make the baton attack the enemy multiple times? It only spawns on the enemy once and doesn’t come back despite the enemy being closer to the player. This is for a school project