Files
DailyDungeon/Scripts/arrow.gd

38 lines
1002 B
GDScript

extends Projectile
class_name Arrow
@onready var hit_ray: RayCast3D = $HitRay
@onready var land_depth: Marker3D = $LandDepth
@onready var arrow: MeshInstance3D = $Arrow
@onready var pickup_collision: Area3D = $PickupCollision
var follow_target
var spawn_out = false
func _ready() -> void:
pickup_collision.monitorable = false
func _physics_process(delta: float) -> void:
if !despawn:
if hit_ray.is_colliding():
despawn = true
var body_hit = hit_ray.get_collider()
if body_hit is EnemyCharacter:
body_hit.hit(damage)
reparent(body_hit)
var stick_point = hit_ray.get_collision_point()
if land_depth.global_position.distance_to(stick_point) > .2:
global_position += global_transform.basis * Vector3(0,0,-speed) * delta
else:
global_position += global_transform.basis * Vector3(0,0,-speed) * delta
else:
pickup_collision.monitorable = true
pickup_follow(delta)
func pickup_follow(delta):
if follow_target != null:
follow_target.arrows += 1
queue_free()