item pickup work
added extra stop before player eats the item so you can see what you've gathered
This commit is contained in:
@@ -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"]
|
||||
|
||||
@@ -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"]
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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"]
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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.
|
||||
|
||||
Reference in New Issue
Block a user