5 @export var speed := 20.0
6 @export var max_range := 30.0
8 var last_movement_direction: Vector3
10 var collision_layer: int = 1
11 var collision_mask: int = 1
15 @onready var hurtbox: Hurtbox = $Model/Hurtbox
18 func _ready() -> void:
19 if last_movement_direction:
20 last_movement_direction = last_movement_direction.normalized()
22 last_movement_direction = Vector3.BACK.rotated(Vector3.UP, global_rotation.y)
24 hurtbox.weapon = weapon
25 hurtbox.is_attacking = true
26 hurtbox.set_collision_layer(collision_layer)
27 hurtbox.set_collision_mask(collision_mask)
28 _origin = global_position
30 # TODO: if projectile gets reflected, this must be recalculated!
31 var target_angle := Vector3.BACK.signed_angle_to(last_movement_direction, Vector3.UP)
32 global_rotate(Vector3.UP, target_angle)
35 func _process(delta: float) -> void:
36 if (global_position - _origin).length() > max_range:
39 global_position = lerp(
41 global_position + speed * last_movement_direction,