31 lines
793 B
GDScript
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
|