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")
|
stream = ExtResource("2_2ks2g")
|
||||||
attenuation_model = 1
|
attenuation_model = 1
|
||||||
autoplay = true
|
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")
|
stream = ExtResource("2_8hupy")
|
||||||
attenuation_model = 1
|
attenuation_model = 1
|
||||||
autoplay = true
|
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"]
|
[node name="CollisionShape3D" type="CollisionShape3D" parent="Area3D"]
|
||||||
shape = SubResource("CapsuleShape3D_ms2qn")
|
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
|
hit_from_inside = true
|
||||||
collide_with_areas = 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="."]
|
[node name="pick_up_detection" type="Area3D" parent="."]
|
||||||
collision_layer = 0
|
collision_layer = 0
|
||||||
collision_mask = 16
|
collision_mask = 16
|
||||||
|
|||||||
@@ -76,6 +76,12 @@ skeleton = NodePath("")
|
|||||||
[node name="CollisionShape3D2" type="CollisionShape3D" parent="."]
|
[node name="CollisionShape3D2" type="CollisionShape3D" parent="."]
|
||||||
shape = SubResource("CapsuleShape3D_om0ey")
|
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="body_entered" from="." to="." method="_on_body_entered"]
|
||||||
[connection signal="area_entered" from="Area3D" to="." method="_on_area_3d_area_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"]
|
[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
|
@export_enum("Ammo", "Stamina", "Health", "Money","Weapon") var pickupType: int
|
||||||
|
|
||||||
@onready var level_control = get_tree().current_scene
|
@onready var level_control = get_tree().current_scene
|
||||||
|
@onready var timer: Timer = $Timer
|
||||||
|
|
||||||
|
var pickupable = false
|
||||||
|
var pick_up = false
|
||||||
var rand_amt
|
var rand_amt
|
||||||
var player_follow
|
var player_follow
|
||||||
var player
|
var player
|
||||||
@@ -20,15 +23,23 @@ func _ready():
|
|||||||
rand_amt = randi_range(25,100)
|
rand_amt = randi_range(25,100)
|
||||||
|
|
||||||
if despawning == true:
|
if despawning == true:
|
||||||
await get_tree().create_timer(despawn_time_s).timeout
|
timer.wait_time = despawn_time_s
|
||||||
collision_shape.disabled = true
|
timer.start()
|
||||||
await get_tree().create_timer(1).timeout
|
|
||||||
self.queue_free()
|
|
||||||
|
|
||||||
func _physics_process(delta):
|
func _physics_process(delta):
|
||||||
if player_follow != null:
|
if player_follow != null and !pick_up:
|
||||||
var float_direction = (player.global_position - self.position)
|
despawning = false
|
||||||
self.set_linear_velocity(float_direction * 7)
|
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():
|
func picked_up():
|
||||||
player.pickup_sound.pitch_scale = 1 + randf_range(-.3,.3)
|
player.pickup_sound.pitch_scale = 1 + randf_range(-.3,.3)
|
||||||
@@ -52,3 +63,10 @@ func picked_up():
|
|||||||
level_control.money += rand_amt
|
level_control.money += rand_amt
|
||||||
|
|
||||||
queue_free()
|
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 weapon_spawner = $Head/Camera3D/WeaponHolder/WeaponSpawner
|
||||||
@onready var pick_up_detection = $pick_up_detection
|
@onready var pick_up_detection = $pick_up_detection
|
||||||
|
@onready var item_holder: Node3D = $Head/ItemHolder
|
||||||
|
|
||||||
|
|
||||||
func _ready():
|
func _ready():
|
||||||
@@ -291,6 +292,7 @@ func _headbob(time) -> Vector3:
|
|||||||
func _on_pick_up_detection_body_entered(body):
|
func _on_pick_up_detection_body_entered(body):
|
||||||
|
|
||||||
if body.is_in_group("pickup"):
|
if body.is_in_group("pickup"):
|
||||||
|
if body.pickupable:
|
||||||
body.picked_up()
|
body.picked_up()
|
||||||
|
|
||||||
|
|
||||||
@@ -304,6 +306,7 @@ func ladder_collide(is_climbing):
|
|||||||
func _on_pick_up_magnet_body_entered(body):
|
func _on_pick_up_magnet_body_entered(body):
|
||||||
if body.is_in_group("pickup") and body.is_in_group("magnet"):
|
if body.is_in_group("pickup") and body.is_in_group("magnet"):
|
||||||
body.player_follow = self
|
body.player_follow = self
|
||||||
|
#body.collision_shape.disabled = true
|
||||||
|
|
||||||
func weapon_tilt(input_x, delta):
|
func weapon_tilt(input_x, delta):
|
||||||
if weapon_holder:
|
if weapon_holder:
|
||||||
|
|||||||
@@ -6,6 +6,8 @@ extends RigidBody3D
|
|||||||
|
|
||||||
@onready var level_control = get_tree().current_scene
|
@onready var level_control = get_tree().current_scene
|
||||||
|
|
||||||
|
var pickupable = true
|
||||||
|
|
||||||
# Called when the node enters the scene tree for the first time.
|
# Called when the node enters the scene tree for the first time.
|
||||||
func _ready():
|
func _ready():
|
||||||
pass # Replace with function body.
|
pass # Replace with function body.
|
||||||
|
|||||||
Reference in New Issue
Block a user