1
Fork 0
mirror of https://github.com/Steffo99/pineapple-surf.git synced 2024-11-21 23:34:21 +00:00

Refactor Pineapple scene

This commit is contained in:
Steffo 2023-01-08 21:27:26 +01:00
parent eda71d785f
commit 040aee2f15
Signed by: steffo
GPG key ID: 6965406171929D01
5 changed files with 96 additions and 54 deletions

View file

@ -0,0 +1,25 @@
extends Node3D
@export_node_path(RigidBody3D) var target_path: NodePath
@onready var sound: AudioStreamPlayer3D = $CollectSound
var is_collected := false
@onready var target: RigidBody3D = get_node(target_path)
signal collected()
func collect():
is_collected = true
target.visible = false
sound.play()
emit_signal("collected")
await get_tree().create_timer(1).timeout
target.queue_free()
func _on_collect_area_body_entered(body: Node3D):
if body is Player:
collect()

View file

@ -0,0 +1,27 @@
[gd_scene load_steps=4 format=3 uid="uid://ci0hy0d4d1476"]
[ext_resource type="Script" path="res://island/CollectibleByPlayer.gd" id="1_grwn8"]
[ext_resource type="AudioStream" uid="uid://cykcqgvvh2lrc" path="res://assets/collect.wav" id="2_0trxg"]
[sub_resource type="CylinderShape3D" id="CylinderShape3D_0qal3"]
height = 1.4
radius = 0.7
[node name="CollectibleByPlayer" type="Node3D"]
script = ExtResource("1_grwn8")
[node name="CollectSound" type="AudioStreamPlayer3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.5, 0.1, 0.5)
stream = ExtResource("2_0trxg")
attenuation_filter_cutoff_hz = 20500.0
[node name="CollectArea" type="Area3D" parent="."]
collision_layer = 0
collision_mask = 4
monitorable = false
[node name="Shape" type="CollisionShape3D" parent="CollectArea"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.5, 0)
shape = SubResource("CylinderShape3D_0qal3")
[connection signal="body_entered" from="CollectArea" to="." method="_on_collect_area_body_entered"]

View file

@ -1,23 +1,22 @@
extends Node
@export var force_multiplier: float
@export var target: RigidBody3D
@export var capture_radius: float = 1.5
@export_node_path(RigidBody3D) var target_path: NodePath
@export var is_magnetized := false
@onready var magnet_area: Area3D = $MagnetArea
@onready var capture_area: Area3D = $CaptureArea
@onready var pop: AudioStreamPlayer3D = $"../Pop"
@onready var mesh: MeshInstance3D = $"../PineappleMesh"
@onready var target: RigidBody3D = get_node(target_path)
var captured = false
signal magnetized()
func capture():
captured = true
func magnetize():
is_magnetized = true
emit_signal("magnetized")
func _physics_process(delta):
if captured:
if is_magnetized and target != null:
var direction = Singletons.player.position - target.position
var force = direction.normalized() * force_multiplier * delta
target.apply_force(force)
@ -25,12 +24,4 @@ func _physics_process(delta):
func _on_magnet_area_body_entered(body: Node3D):
if body is Player:
print("Player captured pickup!")
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()
magnetize()

View file

@ -0,0 +1,22 @@
[gd_scene load_steps=3 format=3 uid="uid://cvou86mnmtloe"]
[ext_resource type="Script" path="res://island/MoveTowardsPlayer.gd" id="1_bpw63"]
[sub_resource type="CylinderShape3D" id="CylinderShape3D_qg6sr"]
height = 6.0
radius = 3.0
[node name="MoveTowardsPlayer" type="Node3D" node_paths=PackedStringArray("target")]
script = ExtResource("1_bpw63")
force_multiplier = 1250.0
target = NodePath("..")
[node name="MagnetArea" type="Area3D" parent="."]
collision_layer = 0
monitorable = false
[node name="Shape" type="CollisionShape3D" parent="MagnetArea"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.5, 0)
shape = SubResource("CylinderShape3D_qg6sr")
[connection signal="body_entered" from="MagnetArea" to="." method="_on_magnet_area_body_entered"]

View file

@ -1,22 +1,15 @@
[gd_scene load_steps=8 format=3 uid="uid://v7bv81krh12e"]
[gd_scene load_steps=7 format=3 uid="uid://v7bv81krh12e"]
[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="AudioStream" uid="uid://lkftwgdun745" path="res://assets/pop.wav" id="3_b3ttd"]
[ext_resource type="Script" path="res://island/Pop.gd" id="4_rn5e2"]
[ext_resource type="PackedScene" uid="uid://cvou86mnmtloe" path="res://island/MoveTowardsPlayer.tscn" id="4_xnsun"]
[ext_resource type="PackedScene" uid="uid://ci0hy0d4d1476" path="res://island/CollectibleByPlayer.tscn" id="5_yps0c"]
[sub_resource type="CylinderShape3D" id="CylinderShape3D_l6rok"]
[sub_resource type="CylinderShape3D" id="CylinderShape3D_ax3vd"]
height = 0.9
radius = 0.3
[sub_resource type="CylinderShape3D" id="CylinderShape3D_qf6hb"]
height = 6.0
radius = 3.0
[sub_resource type="CylinderShape3D" id="CylinderShape3D_w04xf"]
height = 1.4
radius = 0.7
[node name="Pineapple" type="RigidBody3D"]
collision_layer = 2
collision_mask = 5
@ -25,37 +18,21 @@ linear_damp = 1.0
[node name="Shape" type="CollisionShape3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.45, 0)
shape = SubResource("CylinderShape3D_l6rok")
shape = SubResource("CylinderShape3D_ax3vd")
[node name="PineappleMesh" parent="." instance=ExtResource("1_ndmmp")]
[node name="Pop" type="AudioStreamPlayer3D" parent="."]
[node name="PopSound" 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")]
script = ExtResource("2_d3itl")
force_multiplier = 1250.0
target = NodePath("..")
[node name="MoveTowardsPlayer" parent="." instance=ExtResource("4_xnsun")]
target_path = NodePath("..")
[node name="MagnetArea" type="Area3D" parent="MoveTowardsPlayer"]
collision_layer = 0
monitorable = false
[node name="CollectibleByPlayer" parent="." instance=ExtResource("5_yps0c")]
target_path = NodePath("..")
[node name="Shape" type="CollisionShape3D" parent="MoveTowardsPlayer/MagnetArea"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.5, 0)
shape = SubResource("CylinderShape3D_qf6hb")
[node name="CaptureArea" type="Area3D" parent="MoveTowardsPlayer"]
collision_layer = 0
collision_mask = 4
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_w04xf")
[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"]
[editable path="MoveTowardsPlayer"]
[editable path="CollectibleByPlayer"]