Chitter & ambiance

This commit is contained in:
Rob Kelly 2025-04-01 16:11:11 -06:00
parent c1610629df
commit 0a7dabc797
25 changed files with 282 additions and 3 deletions

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,24 @@
[remap]
importer="wav"
type="AudioStreamWAV"
uid="uid://dx4d8a3mgpws"
path="res://.godot/imported/drone_loop.wav-50d3d68932a0f8909ec9e82813b96e81.sample"
[deps]
source_file="res://assets/sfx/ambient/drone_loop.wav"
dest_files=["res://.godot/imported/drone_loop.wav-50d3d68932a0f8909ec9e82813b96e81.sample"]
[params]
force/8_bit=false
force/mono=false
force/max_rate=false
force/max_rate_hz=44100
edit/trim=false
edit/normalize=false
edit/loop_mode=2
edit/loop_begin=0
edit/loop_end=-1
compress/mode=2

Binary file not shown.

View File

@ -0,0 +1,24 @@
[remap]
importer="wav"
type="AudioStreamWAV"
uid="uid://cqh31d5my7fst"
path="res://.godot/imported/metal_creak1.wav-a72b7ee01a1248f0ebb7ee255aa967a8.sample"
[deps]
source_file="res://assets/sfx/ambient/metal_creak1.wav"
dest_files=["res://.godot/imported/metal_creak1.wav-a72b7ee01a1248f0ebb7ee255aa967a8.sample"]
[params]
force/8_bit=false
force/mono=false
force/max_rate=false
force/max_rate_hz=44100
edit/trim=false
edit/normalize=false
edit/loop_mode=0
edit/loop_begin=0
edit/loop_end=-1
compress/mode=2

BIN
assets/sfx/grunk/groan1.wav Normal file

Binary file not shown.

View File

@ -0,0 +1,24 @@
[remap]
importer="wav"
type="AudioStreamWAV"
uid="uid://b288km80xeh0"
path="res://.godot/imported/groan1.wav-166de7281a9e784fa78c70717b1d3d25.sample"
[deps]
source_file="res://assets/sfx/grunk/groan1.wav"
dest_files=["res://.godot/imported/groan1.wav-166de7281a9e784fa78c70717b1d3d25.sample"]
[params]
force/8_bit=false
force/mono=false
force/max_rate=false
force/max_rate_hz=44100
edit/trim=false
edit/normalize=false
edit/loop_mode=0
edit/loop_begin=0
edit/loop_end=-1
compress/mode=2

BIN
assets/sfx/grunk/groan2.wav Normal file

Binary file not shown.

View File

@ -0,0 +1,24 @@
[remap]
importer="wav"
type="AudioStreamWAV"
uid="uid://bujyltdunajj4"
path="res://.godot/imported/groan2.wav-4e09bb09a4fa758f7652d6019d2f82fc.sample"
[deps]
source_file="res://assets/sfx/grunk/groan2.wav"
dest_files=["res://.godot/imported/groan2.wav-4e09bb09a4fa758f7652d6019d2f82fc.sample"]
[params]
force/8_bit=false
force/mono=false
force/max_rate=false
force/max_rate_hz=44100
edit/trim=false
edit/normalize=false
edit/loop_mode=0
edit/loop_begin=0
edit/loop_end=-1
compress/mode=2

BIN
assets/sfx/grunk/groan3.wav Normal file

Binary file not shown.

View File

@ -0,0 +1,24 @@
[remap]
importer="wav"
type="AudioStreamWAV"
uid="uid://bvtopyke5d17x"
path="res://.godot/imported/groan3.wav-fe410936dcc4c7f7a7e17ce1ef5eecf0.sample"
[deps]
source_file="res://assets/sfx/grunk/groan3.wav"
dest_files=["res://.godot/imported/groan3.wav-fe410936dcc4c7f7a7e17ce1ef5eecf0.sample"]
[params]
force/8_bit=false
force/mono=false
force/max_rate=false
force/max_rate_hz=44100
edit/trim=false
edit/normalize=false
edit/loop_mode=0
edit/loop_begin=0
edit/loop_end=-1
compress/mode=2

View File

@ -0,0 +1,62 @@
extends AudioStreamPlayer
const MUTE_VOLUME := -80.0
@export var volume_increment := 0.618
@export var base_volume := -14.0
@export var boosted_volume := -2.0
var target_volume := MUTE_VOLUME
var suppressed := false
var boosted := false
func _ready() -> void:
Game.manager.alert_raised.connect(_on_alert_raised)
func get_target_volume() -> float:
if suppressed:
return MUTE_VOLUME
if boosted:
return boosted_volume
return target_volume
## Temporarily suppress ambience
func suppress(time: float = 5.0) -> void:
suppressed = true
get_tree().create_timer(time).timeout.connect(_unsuppress)
## Temporarily boost ambience
func boost(time: float = 5.0) -> void:
boosted = true
get_tree().create_timer(time).timeout.connect(_unboost)
func _unsuppress() -> void:
suppressed = false
func _unboost() -> void:
boosted = false
func _process(delta: float) -> void:
volume_db = lerpf(volume_db, get_target_volume(), volume_increment * delta)
func _on_player_enters_ship(_body: Node3D) -> void:
target_volume = MUTE_VOLUME
func _on_player_exits_ship(_body: Node3D) -> void:
target_volume = base_volume
func _on_alert_raised(new_level: int) -> void:
if new_level == Game.manager.MAX_ALERT:
suppress(30)
else:
boost(10.0)

View File

@ -0,0 +1 @@
uid://441gcyrbv0jd

View File

@ -1,9 +1,14 @@
[gd_scene load_steps=5 format=3 uid="uid://bov4ok76woyc"] [gd_scene load_steps=8 format=3 uid="uid://bov4ok76woyc"]
[ext_resource type="PackedScene" uid="uid://crydi5cjgfwe5" path="res://levels/ghost_ship/ghost_ship_level.tscn" id="1_aj2m7"] [ext_resource type="PackedScene" uid="uid://crydi5cjgfwe5" path="res://levels/ghost_ship/ghost_ship_level.tscn" id="1_aj2m7"]
[ext_resource type="Environment" uid="uid://bkvij3ljl5ox3" path="res://levels/ghost_ship/environment_3.tres" id="1_wwgrl"] [ext_resource type="Environment" uid="uid://bkvij3ljl5ox3" path="res://levels/ghost_ship/environment_3.tres" id="1_wwgrl"]
[ext_resource type="PackedScene" uid="uid://bwe2jdmvinhqd" path="res://src/player/player.tscn" id="2_0ef5p"] [ext_resource type="PackedScene" uid="uid://bwe2jdmvinhqd" path="res://src/player/player.tscn" id="2_0ef5p"]
[ext_resource type="PackedScene" uid="uid://d1kacn4b60ucy" path="res://src/ui/post_processing.tscn" id="3_o7mxe"] [ext_resource type="PackedScene" uid="uid://d1kacn4b60ucy" path="res://src/ui/post_processing.tscn" id="3_o7mxe"]
[ext_resource type="AudioStream" uid="uid://dx4d8a3mgpws" path="res://assets/sfx/ambient/drone_loop.wav" id="5_ejh2c"]
[ext_resource type="Script" uid="uid://441gcyrbv0jd" path="res://levels/ghost_ship/ambient_drone.gd" id="5_jiowi"]
[sub_resource type="BoxShape3D" id="BoxShape3D_o7mxe"]
size = Vector3(6, 4, 15)
[node name="GhostShip" type="Node3D"] [node name="GhostShip" type="Node3D"]
@ -18,3 +23,24 @@ environment = ExtResource("1_wwgrl")
transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 0, 1, 0) transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 0, 1, 0)
[node name="Player" parent="PlayerSpawn" instance=ExtResource("2_0ef5p")] [node name="Player" parent="PlayerSpawn" instance=ExtResource("2_0ef5p")]
[node name="PlayerShipArea" type="Area3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2, 0)
collision_layer = 0
collision_mask = 8
[node name="CollisionShape3D" type="CollisionShape3D" parent="PlayerShipArea"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.5, 0)
shape = SubResource("BoxShape3D_o7mxe")
[node name="AmbientDrone" type="AudioStreamPlayer" parent="."]
unique_name_in_owner = true
stream = ExtResource("5_ejh2c")
volume_db = -80.0
autoplay = true
bus = &"Music"
script = ExtResource("5_jiowi")
base_volume = -18.0
[connection signal="body_entered" from="PlayerShipArea" to="AmbientDrone" method="_on_player_enters_ship"]
[connection signal="body_exited" from="PlayerShipArea" to="AmbientDrone" method="_on_player_exits_ship"]

View File

@ -6196,6 +6196,7 @@ outline_size = 36
[node name="GrunkNodule" parent="Airlock" instance=ExtResource("19_ji5cn")] [node name="GrunkNodule" parent="Airlock" instance=ExtResource("19_ji5cn")]
transform = Transform3D(1, 0, 0, 0, 0.866026, -0.5, 0, 0.5, 0.866026, -2.05, 0.15, -4.5) transform = Transform3D(1, 0, 0, 0, 0.866026, -0.5, 0, 0.5, 0.866026, -2.05, 0.15, -4.5)
chitter = true
value = 4000.0 value = 4000.0
[node name="GrunkNodule2" parent="Airlock" instance=ExtResource("19_ji5cn")] [node name="GrunkNodule2" parent="Airlock" instance=ExtResource("19_ji5cn")]
@ -6203,6 +6204,7 @@ transform = Transform3D(0.5, 0, 0, 0, 0.353553, 0.353554, 0, -0.353554, 0.353553
[node name="GrunkNodule3" parent="Airlock" instance=ExtResource("19_ji5cn")] [node name="GrunkNodule3" parent="Airlock" instance=ExtResource("19_ji5cn")]
transform = Transform3D(0.5, 0, 0, 0, 0.353553, 0.353554, 0, -0.353554, 0.353553, 1.4, 2.65, -4.3) transform = Transform3D(0.5, 0, 0, 0, 0.353553, 0.353554, 0, -0.353554, 0.353553, 1.4, 2.65, -4.3)
chitter = true
[node name="OverheadLight" parent="Airlock" instance=ExtResource("39_kp5n7")] [node name="OverheadLight" parent="Airlock" instance=ExtResource("39_kp5n7")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 3, 0) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 3, 0)
@ -6293,10 +6295,12 @@ shape = SubResource("ConcavePolygonShape3D_ruwlj")
[node name="GrunkNodule" parent="Corridor1/Hallway2" instance=ExtResource("19_ji5cn")] [node name="GrunkNodule" parent="Corridor1/Hallway2" instance=ExtResource("19_ji5cn")]
transform = Transform3D(0.866025, 0.5, 0, -0.5, 0.866025, 0, 0, 0, 1, -1.35, 0, -1.15) transform = Transform3D(0.866025, 0.5, 0, -0.5, 0.866025, 0, 0, 0, 1, -1.35, 0, -1.15)
chitter = true
value = 4000.0 value = 4000.0
[node name="GrunkNodule2" parent="Corridor1/Hallway2" instance=ExtResource("19_ji5cn")] [node name="GrunkNodule2" parent="Corridor1/Hallway2" instance=ExtResource("19_ji5cn")]
transform = Transform3D(0.519615, 0.3, 0, 2.98023e-08, 2.98023e-08, -0.6, -0.3, 0.519615, 0, -1.35, 0, 0.25) transform = Transform3D(0.519615, 0.3, 0, 2.98023e-08, 2.98023e-08, -0.6, -0.3, 0.519615, 0, -1.35, 0, 0.25)
chitter = true
[node name="GrunkNodule3" parent="Corridor1/Hallway2" instance=ExtResource("19_ji5cn")] [node name="GrunkNodule3" parent="Corridor1/Hallway2" instance=ExtResource("19_ji5cn")]
transform = Transform3D(0.129904, 0.375, -0.45, -0.439868, -0.241946, -0.328601, -0.386835, 0.401045, 0.222535, -1.35, 0.5, -0.25) transform = Transform3D(0.129904, 0.375, -0.45, -0.439868, -0.241946, -0.328601, -0.386835, 0.401045, 0.222535, -1.35, 0.5, -0.25)
@ -6307,10 +6311,12 @@ value = 800.0
[node name="GrunkNodule6" parent="Corridor1/Hallway2" instance=ExtResource("19_ji5cn")] [node name="GrunkNodule6" parent="Corridor1/Hallway2" instance=ExtResource("19_ji5cn")]
transform = Transform3D(0.109602, 0.109602, 0.268468, 0.219203, -0.219203, 9.58262e-10, 0.189835, 0.189835, -0.155, -1.5, 1.52511, -2.25) transform = Transform3D(0.109602, 0.109602, 0.268468, 0.219203, -0.219203, 9.58262e-10, 0.189835, 0.189835, -0.155, -1.5, 1.52511, -2.25)
chitter = true
value = 800.0 value = 800.0
[node name="GrunkNodule5" parent="Corridor1/Hallway2" instance=ExtResource("19_ji5cn")] [node name="GrunkNodule5" parent="Corridor1/Hallway2" instance=ExtResource("19_ji5cn")]
transform = Transform3D(0.0773296, 0.288598, 0.1725, 0.0446463, 0.166622, -0.298779, -0.333244, 0.0892925, -7.54021e-09, -1.5, 1.12511, -1.75) transform = Transform3D(0.0773296, 0.288598, 0.1725, 0.0446463, 0.166622, -0.298779, -0.333244, 0.0892925, -7.54021e-09, -1.5, 1.12511, -1.75)
chitter = true
value = 800.0 value = 800.0
[node name="FloatingDust" parent="Corridor1/Hallway2" instance=ExtResource("25_6giaa")] [node name="FloatingDust" parent="Corridor1/Hallway2" instance=ExtResource("25_6giaa")]
@ -6791,6 +6797,7 @@ value = 500.0
[node name="GrunkNodule7" parent="MessHall/Traps/Trap1" instance=ExtResource("19_ji5cn")] [node name="GrunkNodule7" parent="MessHall/Traps/Trap1" instance=ExtResource("19_ji5cn")]
transform = Transform3D(0.214063, 0.323536, -0.0974745, -0.07312, -0.0683013, -0.387283, -0.329895, 0.225076, 0.0225905, 1.44886, 0.3, 1.41177) transform = Transform3D(0.214063, 0.323536, -0.0974745, -0.07312, -0.0683013, -0.387283, -0.329895, 0.225076, 0.0225905, 1.44886, 0.3, 1.41177)
chitter = true
durability = 1.5 durability = 1.5
value = 500.0 value = 500.0
@ -6812,9 +6819,11 @@ transform = Transform3D(-0.364606, -0.492715, -0.338074, -0.478109, 0.478109, -0
[node name="GrunkNodule8" parent="MessHall/Traps/Trap1" instance=ExtResource("19_ji5cn")] [node name="GrunkNodule8" parent="MessHall/Traps/Trap1" instance=ExtResource("19_ji5cn")]
transform = Transform3D(-0.435211, -0.430994, -0.338873, -0.539981, 0.411872, 0.169653, 0.0949319, 0.366886, -0.588543, -0.507496, 0.6, -2.41218) transform = Transform3D(-0.435211, -0.430994, -0.338873, -0.539981, 0.411872, 0.169653, 0.0949319, 0.366886, -0.588543, -0.507496, 0.6, -2.41218)
chitter = true
[node name="GrunkNodule9" parent="MessHall/Traps/Trap1" instance=ExtResource("19_ji5cn")] [node name="GrunkNodule9" parent="MessHall/Traps/Trap1" instance=ExtResource("19_ji5cn")]
transform = Transform3D(-0.0703269, 0.693365, 0.0655666, 0.696452, 0.0702819, 0.00378095, -0.00283841, 0.0656149, -0.696912, -1.35603, 0.6, -0.942478) transform = Transform3D(-0.0703269, 0.693365, 0.0655666, 0.696452, 0.0702819, 0.00378095, -0.00283841, 0.0656149, -0.696912, -1.35603, 0.6, -0.942478)
chitter = true
[node name="GrunkNodule10" parent="MessHall/Traps/Trap1" instance=ExtResource("19_ji5cn")] [node name="GrunkNodule10" parent="MessHall/Traps/Trap1" instance=ExtResource("19_ji5cn")]
transform = Transform3D(0.0233609, -0.207042, -0.45452, 0.497466, 0.0502018, 0.00270045, 0.0445172, -0.452342, 0.208338, -1.49432, 0.348541, 0.0263252) transform = Transform3D(0.0233609, -0.207042, -0.45452, 0.497466, 0.0502018, 0.00270045, 0.0445172, -0.452342, 0.208338, -1.49432, 0.348541, 0.0263252)
@ -6824,6 +6833,7 @@ editor_description = "Teach players traps may not always be obvious"
[node name="GrunkNodule8" parent="MessHall/Traps/Trap2" instance=ExtResource("19_ji5cn")] [node name="GrunkNodule8" parent="MessHall/Traps/Trap2" instance=ExtResource("19_ji5cn")]
transform = Transform3D(0.73038, 0.635646, -0.25, -0.683013, 0.683013, -0.258819, 0.00623576, 0.35979, 0.933013, 2.53411, 0.4, 5.23866) transform = Transform3D(0.73038, 0.635646, -0.25, -0.683013, 0.683013, -0.258819, 0.00623576, 0.35979, 0.933013, 2.53411, 0.4, 5.23866)
chitter = true
[node name="GrunkNodule10" parent="MessHall/Traps/Trap2" instance=ExtResource("19_ji5cn")] [node name="GrunkNodule10" parent="MessHall/Traps/Trap2" instance=ExtResource("19_ji5cn")]
transform = Transform3D(-0.124128, -0.101968, 0.578096, -0.434356, -0.381517, -0.160559, 0.394876, -0.451716, 0.00511129, 2.23411, 1.3, 4.63866) transform = Transform3D(-0.124128, -0.101968, 0.578096, -0.434356, -0.381517, -0.160559, 0.394876, -0.451716, 0.00511129, 2.23411, 1.3, 4.63866)
@ -6839,6 +6849,7 @@ value = 300.0
[node name="GrunkNodule16" parent="MessHall/Traps/Trap2" instance=ExtResource("19_ji5cn")] [node name="GrunkNodule16" parent="MessHall/Traps/Trap2" instance=ExtResource("19_ji5cn")]
transform = Transform3D(0.121483, -0.134858, -0.238862, -0.195351, 0.140856, -0.178879, 0.192561, 0.227976, -0.030777, 1.37645, 1.58525, 4.81688) transform = Transform3D(0.121483, -0.134858, -0.238862, -0.195351, 0.140856, -0.178879, 0.192561, 0.227976, -0.030777, 1.37645, 1.58525, 4.81688)
chitter = true
value = 300.0 value = 300.0
[node name="GrunkNodule12" parent="MessHall/Traps/Trap2" instance=ExtResource("19_ji5cn")] [node name="GrunkNodule12" parent="MessHall/Traps/Trap2" instance=ExtResource("19_ji5cn")]

View File

@ -181,6 +181,7 @@ locale/translations=PackedStringArray("res://assets/text/text.en.translation")
3d_physics/layer_1="Physics" 3d_physics/layer_1="Physics"
3d_physics/layer_2="Interactive" 3d_physics/layer_2="Interactive"
3d_physics/layer_3="Sprayable" 3d_physics/layer_3="Sprayable"
3d_physics/layer_4="Player"
[rendering] [rendering]

View File

@ -223,6 +223,7 @@ stream_1/stream = ExtResource("29_wcxbk")
stream_2/stream = ExtResource("30_p6grl") stream_2/stream = ExtResource("30_p6grl")
[node name="Player" type="CharacterBody3D"] [node name="Player" type="CharacterBody3D"]
collision_layer = 9
script = ExtResource("1_npueo") script = ExtResource("1_npueo")
[node name="CameraPivot" type="Node3D" parent="."] [node name="CameraPivot" type="Node3D" parent="."]

View File

@ -3,10 +3,22 @@ extends GunkNode
@export var jitter_scale_factor := 0.05 @export var jitter_scale_factor := 0.05
@export var jitter_inflation_factor := 1.0 @export var jitter_inflation_factor := 1.0
@export var chitter: bool = false
@export var chitter_time_mean := 120.0
@export var chitter_time_st_dev := 30.0
@export var splatter_scene: PackedScene @export var splatter_scene: PackedScene
@onready var mesh_instance: MeshInstance3D = %MeshInstance3D @onready var mesh_instance: MeshInstance3D = %MeshInstance3D
@onready var chitter_sfx: AudioStreamPlayer3D = %ChitterSFX
@onready var chitter_timer: Timer = %ChitterTimer
func _ready() -> void:
if chitter:
start_chitter_timer()
func _process(delta: float) -> void: func _process(delta: float) -> void:
super._process(delta) super._process(delta)
@ -21,3 +33,13 @@ func _destroy() -> void:
add_sibling(splatter) add_sibling(splatter)
splatter.global_position = global_position splatter.global_position = global_position
splatter.emitting = true splatter.emitting = true
func start_chitter_timer() -> void:
var interval := randfn(chitter_time_mean, chitter_time_st_dev)
chitter_timer.start(interval)
func _on_chitter_timer_timeout() -> void:
chitter_sfx.play()
start_chitter_timer()

View File

@ -1,8 +1,11 @@
[gd_scene load_steps=7 format=4 uid="uid://2yqi5u5eo025"] [gd_scene load_steps=11 format=4 uid="uid://2yqi5u5eo025"]
[ext_resource type="Script" uid="uid://07t7yhijru8f" path="res://src/world/gunk_node/grunk_nodule.gd" id="1_iyr82"] [ext_resource type="Script" uid="uid://07t7yhijru8f" path="res://src/world/gunk_node/grunk_nodule.gd" id="1_iyr82"]
[ext_resource type="PackedScene" uid="uid://xlt78xc1tmkl" path="res://src/effects/grunk_splatter.tscn" id="2_m8r0a"] [ext_resource type="PackedScene" uid="uid://xlt78xc1tmkl" path="res://src/effects/grunk_splatter.tscn" id="2_m8r0a"]
[ext_resource type="Material" uid="uid://bmab6i16v748m" path="res://assets/materials/grunk_jittery.material" id="3_eu6j6"] [ext_resource type="Material" uid="uid://bmab6i16v748m" path="res://assets/materials/grunk_jittery.material" id="3_eu6j6"]
[ext_resource type="AudioStream" uid="uid://b288km80xeh0" path="res://assets/sfx/grunk/groan1.wav" id="4_ri4uq"]
[ext_resource type="AudioStream" uid="uid://bujyltdunajj4" path="res://assets/sfx/grunk/groan2.wav" id="5_7fplw"]
[ext_resource type="AudioStream" uid="uid://bvtopyke5d17x" path="res://assets/sfx/grunk/groan3.wav" id="6_omayi"]
[sub_resource type="ArrayMesh" id="ArrayMesh_24j8i"] [sub_resource type="ArrayMesh" id="ArrayMesh_24j8i"]
_surfaces = [{ _surfaces = [{
@ -39,6 +42,13 @@ shadow_mesh = SubResource("ArrayMesh_24j8i")
[sub_resource type="ConcavePolygonShape3D" id="ConcavePolygonShape3D_530fq"] [sub_resource type="ConcavePolygonShape3D" id="ConcavePolygonShape3D_530fq"]
data = PackedVector3Array(0.7236, -0.4472, 0.5257, 0, -1, 0, -0.2764, -0.4472, 0.8506, 0, -1, 0, 0.7236, -0.4472, 0.5257, 0.7236, -0.4472, -0.5257, -0.2764, -0.4472, 0.8506, 0, -1, 0, -0.8944, -0.4472, 0, -0.8944, -0.4472, 0, 0, -1, 0, -0.2764, -0.4472, -0.8506, -0.2764, -0.4472, -0.8506, 0, -1, 0, 0.7236, -0.4472, -0.5257, 0.7236, -0.4472, -0.5257, 0.7236, -0.4472, 0.5257, 0.8944, 0.4472, 0, 0.7236, -0.4472, 0.5257, -0.2764, -0.4472, 0.8506, 0.2764, 0.4472, 0.8506, -0.2764, -0.4472, 0.8506, -0.8944, -0.4472, 0, -0.7236, 0.4472, 0.5257, -0.8944, -0.4472, 0, -0.2764, -0.4472, -0.8506, -0.7236, 0.4472, -0.5257, -0.2764, -0.4472, -0.8506, 0.7236, -0.4472, -0.5257, 0.2764, 0.4472, -0.8506, 0.8944, 0.4472, 0, 0.7236, -0.4472, 0.5257, 0.2764, 0.4472, 0.8506, 0.2764, 0.4472, 0.8506, -0.2764, -0.4472, 0.8506, -0.7236, 0.4472, 0.5257, -0.7236, 0.4472, 0.5257, -0.8944, -0.4472, 0, -0.7236, 0.4472, -0.5257, -0.7236, 0.4472, -0.5257, -0.2764, -0.4472, -0.8506, 0.2764, 0.4472, -0.8506, 0.2764, 0.4472, -0.8506, 0.7236, -0.4472, -0.5257, 0.8944, 0.4472, 0, 0.8944, 0.4472, 0, 0.2764, 0.4472, 0.8506, 0, 1, 0, 0.2764, 0.4472, 0.8506, -0.7236, 0.4472, 0.5257, 0, 1, 0, -0.7236, 0.4472, 0.5257, -0.7236, 0.4472, -0.5257, 0, 1, 0, -0.7236, 0.4472, -0.5257, 0.2764, 0.4472, -0.8506, 0, 1, 0, 0.2764, 0.4472, -0.8506, 0.8944, 0.4472, 0, 0, 1, 0) data = PackedVector3Array(0.7236, -0.4472, 0.5257, 0, -1, 0, -0.2764, -0.4472, 0.8506, 0, -1, 0, 0.7236, -0.4472, 0.5257, 0.7236, -0.4472, -0.5257, -0.2764, -0.4472, 0.8506, 0, -1, 0, -0.8944, -0.4472, 0, -0.8944, -0.4472, 0, 0, -1, 0, -0.2764, -0.4472, -0.8506, -0.2764, -0.4472, -0.8506, 0, -1, 0, 0.7236, -0.4472, -0.5257, 0.7236, -0.4472, -0.5257, 0.7236, -0.4472, 0.5257, 0.8944, 0.4472, 0, 0.7236, -0.4472, 0.5257, -0.2764, -0.4472, 0.8506, 0.2764, 0.4472, 0.8506, -0.2764, -0.4472, 0.8506, -0.8944, -0.4472, 0, -0.7236, 0.4472, 0.5257, -0.8944, -0.4472, 0, -0.2764, -0.4472, -0.8506, -0.7236, 0.4472, -0.5257, -0.2764, -0.4472, -0.8506, 0.7236, -0.4472, -0.5257, 0.2764, 0.4472, -0.8506, 0.8944, 0.4472, 0, 0.7236, -0.4472, 0.5257, 0.2764, 0.4472, 0.8506, 0.2764, 0.4472, 0.8506, -0.2764, -0.4472, 0.8506, -0.7236, 0.4472, 0.5257, -0.7236, 0.4472, 0.5257, -0.8944, -0.4472, 0, -0.7236, 0.4472, -0.5257, -0.7236, 0.4472, -0.5257, -0.2764, -0.4472, -0.8506, 0.2764, 0.4472, -0.8506, 0.2764, 0.4472, -0.8506, 0.7236, -0.4472, -0.5257, 0.8944, 0.4472, 0, 0.8944, 0.4472, 0, 0.2764, 0.4472, 0.8506, 0, 1, 0, 0.2764, 0.4472, 0.8506, -0.7236, 0.4472, 0.5257, 0, 1, 0, -0.7236, 0.4472, 0.5257, -0.7236, 0.4472, -0.5257, 0, 1, 0, -0.7236, 0.4472, -0.5257, 0.2764, 0.4472, -0.8506, 0, 1, 0, 0.2764, 0.4472, -0.8506, 0.8944, 0.4472, 0, 0, 1, 0)
[sub_resource type="AudioStreamRandomizer" id="AudioStreamRandomizer_yg8lg"]
random_pitch = 1.1
streams_count = 3
stream_0/stream = ExtResource("4_ri4uq")
stream_1/stream = ExtResource("5_7fplw")
stream_2/stream = ExtResource("6_omayi")
[node name="GrunkNodule" type="StaticBody3D"] [node name="GrunkNodule" type="StaticBody3D"]
collision_layer = 5 collision_layer = 5
script = ExtResource("1_iyr82") script = ExtResource("1_iyr82")
@ -52,3 +62,15 @@ mesh = SubResource("ArrayMesh_iyr82")
[node name="CollisionShape3D" type="CollisionShape3D" parent="."] [node name="CollisionShape3D" type="CollisionShape3D" parent="."]
shape = SubResource("ConcavePolygonShape3D_530fq") shape = SubResource("ConcavePolygonShape3D_530fq")
[node name="ChitterSFX" type="AudioStreamPlayer3D" parent="."]
unique_name_in_owner = true
stream = SubResource("AudioStreamRandomizer_yg8lg")
volume_db = -20.0
bus = &"SFX"
[node name="ChitterTimer" type="Timer" parent="."]
unique_name_in_owner = true
one_shot = true
[connection signal="timeout" from="ChitterTimer" to="." method="_on_chitter_timer_timeout"]

View File

@ -48,6 +48,9 @@
- [ ] SFX: - [ ] SFX:
- [ ] ui bonk - [ ] ui bonk
- [ ] prop clear glitter - [ ] prop clear glitter
- [ ] computer bleep on reload
- [ ] grunk tank deposit schlorp
- [ ] player ship door
- [x] metal footsteps - [x] metal footsteps
- [x] plastic footsteps - [x] plastic footsteps
- [x] grunk footsteps - [x] grunk footsteps

View File

@ -30,3 +30,13 @@
- CC0 - CC0
- retrieved from https://freesound.org/people/Nox_Sound/sounds/530588/ - retrieved from https://freesound.org/people/Nox_Sound/sounds/530588/
- assets/sfx/footsteps/plastic/plastic*.wav - assets/sfx/footsteps/plastic/plastic*.wav
- "Metal creak.wav"
- author: sophiehall3535
- CC0
- retrieved from https://freesound.org/people/sophiehall3535/sounds/245945/
- assets/sfx/ambient/metal_creak_1.wav
- "Drone Loop (Fixed)"
- author: Fission9
- CC0
- retrieved from https://freesound.org/people/Fission9/sounds/567220/
- assets/sfx/ambient/drone_loop.wav