mirror of
https://github.com/Steffo99/pineapple-surf.git
synced 2024-11-22 07:44:20 +00:00
Use singleton for Player access and despawn pineapple on Player collision
This commit is contained in:
parent
bf59b1ecd2
commit
fb54a67393
5 changed files with 54 additions and 12 deletions
9
Singletons.gd
Normal file
9
Singletons.gd
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
extends Node
|
||||||
|
|
||||||
|
var player: Player
|
||||||
|
|
||||||
|
func _ready() -> void:
|
||||||
|
pass
|
||||||
|
|
||||||
|
func _process(delta: float) -> void:
|
||||||
|
pass
|
|
@ -2,11 +2,12 @@ extends Node
|
||||||
|
|
||||||
@export var force_multiplier: float
|
@export var force_multiplier: float
|
||||||
@export var target: RigidBody3D
|
@export var target: RigidBody3D
|
||||||
|
@export var capture_radius: float = 1.5
|
||||||
|
|
||||||
# Must be BELOW the player node to work!
|
|
||||||
@onready var magnet_area: Area3D = $MagnetArea
|
@onready var magnet_area: Area3D = $MagnetArea
|
||||||
@onready var player: CharacterBody3D = get_tree().root.find_child("Player", true, false)
|
@onready var capture_area: Area3D = $CaptureArea
|
||||||
|
@onready var pop: AudioStreamPlayer3D = $"../Pop"
|
||||||
|
@onready var mesh: MeshInstance3D = $"../PineappleMesh"
|
||||||
|
|
||||||
var captured = false
|
var captured = false
|
||||||
|
|
||||||
|
@ -17,12 +18,19 @@ func capture():
|
||||||
|
|
||||||
func _physics_process(delta):
|
func _physics_process(delta):
|
||||||
if captured:
|
if captured:
|
||||||
var direction = player.position - target.position
|
var direction = Singletons.player.position - target.position
|
||||||
var force = direction.normalized() * force_multiplier * delta
|
var force = direction.normalized() * force_multiplier * delta
|
||||||
target.apply_force(force)
|
target.apply_force(force)
|
||||||
|
|
||||||
|
|
||||||
func _on_magnet_area_body_entered(body: Node3D):
|
func _on_magnet_area_body_entered(body: Node3D):
|
||||||
if body.name == "Player":
|
if body is Player:
|
||||||
print("Player captured pickup!")
|
print("Player captured pickup!")
|
||||||
capture()
|
capture()
|
||||||
|
|
||||||
|
|
||||||
|
func _on_capture_area_body_entered(body: Node3D) -> void:
|
||||||
|
mesh.visible = false
|
||||||
|
pop.play()
|
||||||
|
await get_tree().create_timer(1).timeout
|
||||||
|
target.queue_free()
|
||||||
|
|
|
@ -1,28 +1,40 @@
|
||||||
[gd_scene load_steps=5 format=3 uid="uid://v7bv81krh12e"]
|
[gd_scene load_steps=8 format=3 uid="uid://v7bv81krh12e"]
|
||||||
|
|
||||||
[ext_resource type="PackedScene" uid="uid://bwwpi0itor6cw" path="res://island/PineappleMesh.tscn" id="1_ndmmp"]
|
[ext_resource type="PackedScene" uid="uid://bwwpi0itor6cw" path="res://island/PineappleMesh.tscn" id="1_ndmmp"]
|
||||||
[ext_resource type="Script" path="res://island/MoveTowardsPlayer.gd" id="2_d3itl"]
|
[ext_resource type="Script" path="res://island/MoveTowardsPlayer.gd" id="2_d3itl"]
|
||||||
|
[ext_resource type="AudioStream" uid="uid://lkftwgdun745" path="res://assets/pop.wav" id="3_b3ttd"]
|
||||||
|
[ext_resource type="Script" path="res://island/Pop.gd" id="4_rn5e2"]
|
||||||
|
|
||||||
[sub_resource type="CylinderShape3D" id="CylinderShape3D_t5bjw"]
|
[sub_resource type="CylinderShape3D" id="CylinderShape3D_xodvb"]
|
||||||
height = 0.9
|
height = 0.9
|
||||||
radius = 0.3
|
radius = 0.3
|
||||||
|
|
||||||
[sub_resource type="CylinderShape3D" id="CylinderShape3D_m5gp0"]
|
[sub_resource type="CylinderShape3D" id="CylinderShape3D_fghe6"]
|
||||||
height = 6.0
|
height = 6.0
|
||||||
radius = 3.0
|
radius = 3.0
|
||||||
|
|
||||||
|
[sub_resource type="CylinderShape3D" id="CylinderShape3D_j5xpy"]
|
||||||
|
height = 1.4
|
||||||
|
radius = 0.7
|
||||||
|
|
||||||
[node name="Pineapple" type="RigidBody3D"]
|
[node name="Pineapple" type="RigidBody3D"]
|
||||||
collision_layer = 2
|
collision_layer = 2
|
||||||
collision_mask = 3
|
collision_mask = 5
|
||||||
lock_rotation = true
|
lock_rotation = true
|
||||||
linear_damp = 1.0
|
linear_damp = 1.0
|
||||||
|
|
||||||
[node name="Shape" type="CollisionShape3D" parent="."]
|
[node name="Shape" type="CollisionShape3D" parent="."]
|
||||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.45, 0)
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.45, 0)
|
||||||
shape = SubResource("CylinderShape3D_t5bjw")
|
shape = SubResource("CylinderShape3D_xodvb")
|
||||||
|
|
||||||
[node name="PineappleMesh" parent="." instance=ExtResource("1_ndmmp")]
|
[node name="PineappleMesh" parent="." instance=ExtResource("1_ndmmp")]
|
||||||
|
|
||||||
|
[node name="Pop" type="AudioStreamPlayer3D" parent="."]
|
||||||
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.5, 0.1, 0.5)
|
||||||
|
stream = ExtResource("3_b3ttd")
|
||||||
|
attenuation_filter_cutoff_hz = 20500.0
|
||||||
|
script = ExtResource("4_rn5e2")
|
||||||
|
|
||||||
[node name="MoveTowardsPlayer" type="Node3D" parent="." node_paths=PackedStringArray("target")]
|
[node name="MoveTowardsPlayer" type="Node3D" parent="." node_paths=PackedStringArray("target")]
|
||||||
script = ExtResource("2_d3itl")
|
script = ExtResource("2_d3itl")
|
||||||
force_multiplier = 1250.0
|
force_multiplier = 1250.0
|
||||||
|
@ -34,6 +46,16 @@ monitorable = false
|
||||||
|
|
||||||
[node name="Shape" type="CollisionShape3D" parent="MoveTowardsPlayer/MagnetArea"]
|
[node name="Shape" type="CollisionShape3D" parent="MoveTowardsPlayer/MagnetArea"]
|
||||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.5, 0)
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.5, 0)
|
||||||
shape = SubResource("CylinderShape3D_m5gp0")
|
shape = SubResource("CylinderShape3D_fghe6")
|
||||||
|
|
||||||
|
[node name="CaptureArea" type="Area3D" parent="MoveTowardsPlayer"]
|
||||||
|
collision_layer = 0
|
||||||
|
collision_mask = 0
|
||||||
|
monitorable = false
|
||||||
|
|
||||||
|
[node name="Shape" type="CollisionShape3D" parent="MoveTowardsPlayer/CaptureArea"]
|
||||||
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.5, 0)
|
||||||
|
shape = SubResource("CylinderShape3D_j5xpy")
|
||||||
|
|
||||||
[connection signal="body_entered" from="MoveTowardsPlayer/MagnetArea" to="MoveTowardsPlayer" method="_on_magnet_area_body_entered"]
|
[connection signal="body_entered" from="MoveTowardsPlayer/MagnetArea" to="MoveTowardsPlayer" method="_on_magnet_area_body_entered"]
|
||||||
|
[connection signal="body_entered" from="MoveTowardsPlayer/CaptureArea" to="MoveTowardsPlayer" method="_on_capture_area_body_entered"]
|
||||||
|
|
|
@ -8,7 +8,7 @@ transparency = 1
|
||||||
shading_mode = 0
|
shading_mode = 0
|
||||||
albedo_texture = ExtResource("1_x2h5q")
|
albedo_texture = ExtResource("1_x2h5q")
|
||||||
texture_filter = 0
|
texture_filter = 0
|
||||||
billboard_mode = 2
|
billboard_mode = 1
|
||||||
|
|
||||||
[sub_resource type="ArrayMesh" id="ArrayMesh_sjes8"]
|
[sub_resource type="ArrayMesh" id="ArrayMesh_sjes8"]
|
||||||
_surfaces = [{
|
_surfaces = [{
|
||||||
|
|
|
@ -118,6 +118,9 @@ fire={
|
||||||
|
|
||||||
3d_physics/layer_1="Default"
|
3d_physics/layer_1="Default"
|
||||||
3d_physics/layer_2="Pickups"
|
3d_physics/layer_2="Pickups"
|
||||||
|
3d_physics/layer_3="Player"
|
||||||
|
3d_physics/layer_4="Terrain"
|
||||||
|
3d_physics/layer_5="Planted seed"
|
||||||
|
|
||||||
[rendering]
|
[rendering]
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue