]> purplebirdman git - frog-ninja.git/blob - asset/projectile/projectile.gd
376ebb00333520e9abc94fa8cd73bc1c17638c80
[frog-ninja.git] / asset / projectile / projectile.gd
1 extends Node3D
2 class_name Projectile
3
4
5 @export var speed := 20.0
6 @export var max_range := 30.0
7
8 var last_movement_direction: Vector3
9 var weapon: Weapon
10 var collision_layer: int = 1
11 var collision_mask: int = 1
12
13 var _origin: Vector3
14
15 @onready var hurtbox: Hurtbox = $Model/Hurtbox
16
17
18 func _ready() -> void:
19         if not last_movement_direction:
20                 last_movement_direction = Vector3.BACK.rotated(Vector3.UP, rotation.y)
21         hurtbox.weapon = weapon
22         hurtbox.is_attacking = true
23         hurtbox.set_collision_layer(collision_layer)
24         hurtbox.set_collision_mask(collision_mask)
25         _origin = global_position
26
27
28 func _process(delta: float) -> void:
29         if (global_position - _origin).length() > max_range:
30                 queue_free()
31         else:
32                 global_position = lerp(
33                         global_position, 
34                         global_position + speed * last_movement_direction.normalized(), 
35                         delta
36                         )