X-Git-Url: http://git.purplebirdman.com/frog-ninja.git/blobdiff_plain/992458ba0caf1d218a85c4bf10e48fd304c85626..HEAD:/asset/projectile/projectile.gd diff --git a/asset/projectile/projectile.gd b/asset/projectile/projectile.gd index 376ebb0..b1c4874 100644 --- a/asset/projectile/projectile.gd +++ b/asset/projectile/projectile.gd @@ -2,35 +2,40 @@ extends Node3D class_name Projectile -@export var speed := 20.0 +## Linear speed of the projectile +@export var speed := 10.0 + +## Direction the projectile will travel in +@export var direction: Vector3: + set(v): + model.last_movement_vector = v + get: + return model.last_movement_vector + +## Maximum distance from the origin point that the projectile will travel @export var max_range := 30.0 -var last_movement_direction: Vector3 +## Weapon which emitted the projectile var weapon: Weapon -var collision_layer: int = 1 -var collision_mask: int = 1 -var _origin: Vector3 +## Collision layer for projectile +var collision_layer: int: + set(c): + model.collision_layer = c + get: + return model.collision_layer + -@onready var hurtbox: Hurtbox = $Model/Hurtbox +## Collision mask for projectile +var collision_mask: int: + set(c): + model.collision_mask = c + get: + return model.collision_mask -func _ready() -> void: - if not last_movement_direction: - last_movement_direction = Vector3.BACK.rotated(Vector3.UP, rotation.y) - hurtbox.weapon = weapon - hurtbox.is_attacking = true - hurtbox.set_collision_layer(collision_layer) - hurtbox.set_collision_mask(collision_mask) - _origin = global_position +@onready var model: ProjectileModel = $Model func _process(delta: float) -> void: - if (global_position - _origin).length() > max_range: - queue_free() - else: - global_position = lerp( - global_position, - global_position + speed * last_movement_direction.normalized(), - delta - ) + model.update(delta)