working on picking up arrows

This commit is contained in:
derek
2025-06-26 17:04:35 -05:00
parent af5ff6f284
commit 64310b848b
37 changed files with 492 additions and 106 deletions

View File

@@ -1,13 +1,45 @@
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
func _process(delta: float) -> void:
if hit_ray.is_colliding():
var stick_point = hit_ray.get_collision_point()
if land_depth.global_position.distance_to(stick_point) > .2:
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:
global_position += global_transform.basis * Vector3(0,0,-speed) * delta
pickup_collision.monitorable = true
pickup_follow(delta)
func pickup_follow(delta):
if follow_target != null:
if spawn_out:
follow_target.arrow += 1
queue_free()
else:
if global_position.distance_to(follow_target.global_position) < .5:
spawn_out = true
else:
var direction_to_player = global_position.direction_to(follow_target.global_position)
var distance_to_player = global_position.distance_to(follow_target.global_position)
global_position += global_transform.basis * direction_to_player * (5 + distance_to_player * 3) * delta