From af5ff6f284e18ba07661d334feac00d75721e052 Mon Sep 17 00:00:00 2001 From: derek Date: Thu, 26 Jun 2025 13:30:23 -0500 Subject: [PATCH] arrows are moving properly now --- Prefabs/arrow.tscn | 20 ++++++++++++-------- Prefabs/player.tscn | 2 +- Scripts/arrow.gd | 12 ++++++++++++ Scripts/projectile.gd | 2 +- Scripts/ranged_attack.gd | 4 ++-- 5 files changed, 28 insertions(+), 12 deletions(-) diff --git a/Prefabs/arrow.tscn b/Prefabs/arrow.tscn index b4bf052..0ad8a64 100644 --- a/Prefabs/arrow.tscn +++ b/Prefabs/arrow.tscn @@ -78,15 +78,14 @@ margin = 0.0 height = 1.77637 radius = 0.1 -[node name="Arrow" type="RigidBody3D"] -collision_layer = 2 -collision_mask = 7 -continuous_cd = true -contact_monitor = true +[node name="Arrow" type="MeshInstance3D"] script = ExtResource("1_c7yig") +[node name="LandDepth" type="Marker3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -1.31712) + [node name="Arrow" type="MeshInstance3D" parent="."] -transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, 0, 0, -0.592316) +transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, 0, 0, -1.57945) mesh = SubResource("ArrayMesh_u78lm") skeleton = NodePath("") metadata/extras = { @@ -94,6 +93,11 @@ metadata/extras = { "poliigon_props": {} } -[node name="CollisionShape3D" type="CollisionShape3D" parent="."] -transform = Transform3D(1, 0, 0, 0, -4.37114e-08, -1, 0, 1, -4.37114e-08, 0, -4.88765e-09, 0.111816) +[node name="ArrowCollider" type="Area3D" parent="."] +transform = Transform3D(1, 0, 0, 0, -4.37114e-08, -1, 0, 1, -4.37114e-08, 0, -4.88765e-09, -0.875317) + +[node name="CollisionShape3D" type="CollisionShape3D" parent="ArrowCollider"] shape = SubResource("CylinderShape3D_c7yig") + +[node name="HitRay" type="RayCast3D" parent="."] +target_position = Vector3(0, 0, -2) diff --git a/Prefabs/player.tscn b/Prefabs/player.tscn index 61d30cf..3e3f1da 100644 --- a/Prefabs/player.tscn +++ b/Prefabs/player.tscn @@ -89,7 +89,7 @@ _data = { radius = 2.5 [node name="Player" type="CharacterBody3D"] -collision_layer = 4 +collision_layer = 20 collision_mask = 5 script = ExtResource("1_5wxv7") diff --git a/Scripts/arrow.gd b/Scripts/arrow.gd index ef9bdc3..8473ce9 100644 --- a/Scripts/arrow.gd +++ b/Scripts/arrow.gd @@ -1 +1,13 @@ extends Projectile + +@onready var hit_ray: RayCast3D = $HitRay +@onready var land_depth: Marker3D = $LandDepth + +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: + global_position += global_transform.basis * Vector3(0,0,-speed) * delta + else: + global_position += global_transform.basis * Vector3(0,0,-speed) * delta diff --git a/Scripts/projectile.gd b/Scripts/projectile.gd index c58f68f..2523c4e 100644 --- a/Scripts/projectile.gd +++ b/Scripts/projectile.gd @@ -1,4 +1,4 @@ -extends RigidBody3D +extends Node3D class_name Projectile var damage diff --git a/Scripts/ranged_attack.gd b/Scripts/ranged_attack.gd index 4cad0fe..2c0a5c6 100644 --- a/Scripts/ranged_attack.gd +++ b/Scripts/ranged_attack.gd @@ -17,8 +17,8 @@ func Physics_Update(delta): func fire_projectile(): var arrow_spawn = fired_object.instantiate() - arrow_spawn.speed = object_speed get_tree().current_scene.add_child(arrow_spawn) + arrow_spawn.speed = object_speed arrow_spawn.transform.basis = character.body.global_transform.basis arrow_spawn.global_position = character.body.global_position - arrow_spawn.linear_velocity += character.body.global_transform.basis * Vector3(0,0,-object_speed) + print("ARROW POS :", arrow_spawn.global_position)