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