SchildDerStaerke/scripts/projectile.gd

31 lines
793 B
GDScript

class_name Projectile extends Node3D
var speed: float = 0.0
var damage_amount: float = 3
@onready var ray_cast: RayCast3D = $RayCast3D
func _physics_process(delta):
if speed > 0.0:
translate(-transform.basis.x * speed * delta)
#translate(Vector3.FORWARD * speed * delta)
if ray_cast.is_colliding():
var collider = ray_cast.get_collider()
#Stuck in collider
print("Arrow hits ", collider)
speed = 0
ray_cast.enabled = false
# var timer = get_tree().create_timer(3.0) # 3 seconds lifetime
# print("Arrow will be removed in 3 seconds")
# timer.timeout.connect(queue_free)
#Trigger damage
if collider.has_method("take_damage"):
collider.call("take_damage", damage_amount)
func shoot() -> void:
print("Shooting arrow...")
speed = 20
ray_cast.enabled = true