item pickup work

added extra stop before player eats the item so you can see what you've gathered
This commit is contained in:
derek
2024-10-01 17:02:40 -05:00
parent f581d6f668
commit 3a450169c0
8 changed files with 56 additions and 8 deletions

View File

@@ -85,3 +85,7 @@ skeleton = NodePath("")
stream = ExtResource("2_2ks2g")
attenuation_model = 1
autoplay = true
[node name="Timer" type="Timer" parent="."]
[connection signal="timeout" from="Timer" to="." method="_on_timer_timeout"]

View File

@@ -73,3 +73,10 @@ shape = SubResource("CapsuleShape3D_om0ey")
stream = ExtResource("2_8hupy")
attenuation_model = 1
autoplay = true
[node name="Timer" type="Timer" parent="."]
[node name="PickupTimer" type="Timer" parent="."]
wait_time = 3.0
[connection signal="timeout" from="PickupTimer" to="." method="_on_pickup_timer_timeout"]

View File

@@ -123,3 +123,8 @@ collision_mask = 16
[node name="CollisionShape3D" type="CollisionShape3D" parent="Area3D"]
shape = SubResource("CapsuleShape3D_ms2qn")
[node name="Timer" type="Timer" parent="."]
[node name="PickupTimer" type="Timer" parent="."]
wait_time = 3.0

View File

@@ -128,6 +128,9 @@ collision_mask = 2
hit_from_inside = true
collide_with_areas = true
[node name="ItemHolder" type="Node3D" parent="Head"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.47261, -2)
[node name="pick_up_detection" type="Area3D" parent="."]
collision_layer = 0
collision_mask = 16

View File

@@ -76,6 +76,12 @@ skeleton = NodePath("")
[node name="CollisionShape3D2" type="CollisionShape3D" parent="."]
shape = SubResource("CapsuleShape3D_om0ey")
[node name="Timer" type="Timer" parent="."]
[node name="PickupTimer" type="Timer" parent="."]
wait_time = 3.0
one_shot = true
[connection signal="body_entered" from="." to="." method="_on_body_entered"]
[connection signal="area_entered" from="Area3D" to="." method="_on_area_3d_area_entered"]
[connection signal="body_entered" from="Area3D" to="." method="_on_area_3d_body_entered"]

View File

@@ -6,7 +6,10 @@ extends RigidBody3D
@export_enum("Ammo", "Stamina", "Health", "Money","Weapon") var pickupType: int
@onready var level_control = get_tree().current_scene
@onready var timer: Timer = $Timer
var pickupable = false
var pick_up = false
var rand_amt
var player_follow
var player
@@ -20,15 +23,23 @@ func _ready():
rand_amt = randi_range(25,100)
if despawning == true:
await get_tree().create_timer(despawn_time_s).timeout
collision_shape.disabled = true
await get_tree().create_timer(1).timeout
self.queue_free()
timer.wait_time = despawn_time_s
timer.start()
func _physics_process(delta):
if player_follow != null:
var float_direction = (player.global_position - self.position)
self.set_linear_velocity(float_direction * 7)
if player_follow != null and !pick_up:
despawning = false
position = lerp(position, player.item_holder.global_position, 25 * delta)
if abs(position - player.item_holder.global_position) < Vector3(.5,.5,.5):
await get_tree().create_timer(3).timeout
pick_up = true
if pick_up:
position = lerp(position, player.camera.global_position, 5 * delta)
if abs(global_position - player.camera.global_position) < Vector3(.5,.5,.5):
pickupable = true
func picked_up():
player.pickup_sound.pitch_scale = 1 + randf_range(-.3,.3)
@@ -52,3 +63,10 @@ func picked_up():
level_control.money += rand_amt
queue_free()
func _on_timer_timeout() -> void:
if despawning == true:
collision_shape.disabled = true
await get_tree().create_timer(1).timeout
self.queue_free()

View File

@@ -89,6 +89,7 @@ var pickupmsg
@onready var weapon_spawner = $Head/Camera3D/WeaponHolder/WeaponSpawner
@onready var pick_up_detection = $pick_up_detection
@onready var item_holder: Node3D = $Head/ItemHolder
func _ready():
@@ -291,7 +292,8 @@ func _headbob(time) -> Vector3:
func _on_pick_up_detection_body_entered(body):
if body.is_in_group("pickup"):
body.picked_up()
if body.pickupable:
body.picked_up()
func ladder_collide(is_climbing):
@@ -304,6 +306,7 @@ func ladder_collide(is_climbing):
func _on_pick_up_magnet_body_entered(body):
if body.is_in_group("pickup") and body.is_in_group("magnet"):
body.player_follow = self
#body.collision_shape.disabled = true
func weapon_tilt(input_x, delta):
if weapon_holder:

View File

@@ -6,6 +6,8 @@ extends RigidBody3D
@onready var level_control = get_tree().current_scene
var pickupable = true
# Called when the node enters the scene tree for the first time.
func _ready():
pass # Replace with function body.