Compare commits

...

3 Commits

Author SHA1 Message Date
c3e1831a36 Tweaks to grunk splatter
All checks were successful
linting & formatting / build (push) Successful in 29s
2025-04-03 16:21:25 -06:00
b60ab2e74f Spray sfx is pitch-shifted based on relative angle to player 2025-04-03 12:51:54 -06:00
a8d1128eaf New spray sfx 2025-04-03 11:58:57 -06:00
11 changed files with 58 additions and 13 deletions

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -6068,6 +6068,7 @@ shape = SubResource("ConcavePolygonShape3D_d1yty")
[node name="SimpleWalls" type="StaticBody3D" parent="Airlock/Bounds"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.5, 0)
collision_layer = 5
[node name="MeshInstance3D" type="MeshInstance3D" parent="Airlock/Bounds/SimpleWalls"]
transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, -4.5, 0, 0)

View File

@ -101,16 +101,20 @@ stream_1/stream = ExtResource("4_2iem1")
[node name="GrunkSplatter" type="GPUParticles3D"]
sorting_offset = 9.0
emitting = false
amount = 64
lifetime = 0.3
one_shot = true
explosiveness = 0.45
process_material = SubResource("ParticleProcessMaterial_5xu2x")
draw_pass_1 = SubResource("QuadMesh_y6klh")
[node name="SubSplatter" type="GPUParticles3D" parent="."]
sorting_offset = 9.0
emitting = false
amount = 4
lifetime = 0.3
one_shot = true
explosiveness = 0.63
interpolate = false
fract_delta = false
@ -118,15 +122,18 @@ process_material = SubResource("ParticleProcessMaterial_2iem1")
draw_pass_1 = SubResource("QuadMesh_6adkd")
[node name="FreeTimer" type="Timer" parent="."]
wait_time = 0.3
wait_time = 3.0
one_shot = true
autostart = true
[node name="SplatterSFX" type="AudioStreamPlayer3D" parent="."]
stream = SubResource("AudioStreamRandomizer_6adkd")
volume_db = -20.0
volume_db = -10.0
unit_size = 6.0
autoplay = true
bus = &"SFX"
[connection signal="ready" from="." to="SplatterSFX" method="play"]
[connection signal="ready" from="." to="." method="set_emitting" binds= [true]]
[connection signal="ready" from="." to="SubSplatter" method="set_emitting" binds= [true]]
[connection signal="timeout" from="FreeTimer" to="." method="queue_free"]

View File

@ -1,6 +1,9 @@
class_name SpraySFX extends AudioStreamPlayer3D
## Plays only as long as `activate` is called every frame.
@export var base_pitch := 1.0
@export var pitch_shape_scale := 0.5
var _active_this_frame := false
@ -8,6 +11,14 @@ func activate() -> void:
_active_this_frame = true
func set_angle_from_normal(normal: Vector3) -> void:
var to_player := Player.instance.global_position - global_position
var angle_to_player := normal.angle_to(to_player)
# linear pitch shape
pitch_scale = base_pitch - (2 * angle_to_player / PI) * pitch_shape_scale
func _process(_delta: float) -> void:
if _active_this_frame:
if not playing:

View File

@ -6,7 +6,6 @@
[node name="SpraySFX" type="AudioStreamPlayer3D"]
stream = ExtResource("1_575yt")
attenuation_model = 1
volume_db = -2.0
unit_size = 1.0
unit_size = 2.0
bus = &"SFX"
script = ExtResource("2_yajv7")

View File

@ -11,6 +11,7 @@ class_name PointSpray extends Spray
func _spray() -> void:
if laser.is_colliding():
spray_sfx.activate()
spray_sfx.set_angle_from_normal(laser.get_collision_normal())
var collider := laser.get_collider()
if collider is GunkBody:

View File

@ -43,6 +43,7 @@ func _spray() -> void:
for laser: LaserCast in spray_casts.get_children():
if laser.is_colliding():
spray_sfx.activate()
spray_sfx.set_angle_from_normal(laser.get_collision_normal())
var collider := laser.get_collider()
if collider is GunkBody:

View File

@ -47,7 +47,11 @@
- [ ] [[manual]]
- [ ] SFX:
- [ ] ui bonk
- [ ] prop clear glitter
- [ ] ui confirm
- [ ] item collection
- [ ] retinal scanner bonk
- [ ] retinal scanner activation
- [ ] #maybe prop clear glitter
- [x] computer bleep on reload
- [x] grunk tank deposit schlorp
- [x] player ship door
@ -56,31 +60,46 @@
- [x] grunk footsteps
- [x] beam noises
- [x] spray noises
- [ ] switch klaxon
- [ ] inactive switch pulse
- [x] switch OK
- [x] switch activation
- [x] bulkhead opening
- [x] grunk nodule splatter
- [ ] REDO grunk nodule splatter
- [x] grunk alarm shriek
- [ ] grunk trigger splatter/pulse
- [ ] grunk relay pulse
- [ ] grunk relay trigger
- [ ] #maybe grunk relay heartbeat
- [ ] grunk alarm heartbeat
- [ ] #maybe grunk alarm pulse-starvation swell
- [ ] #maybe hurt effects for grunk nodes/nodules
- [ ] #maybe fluorescent light hum
- [ ] grunk listener trigger
- [ ] #maybe looker node initial detection
- [ ] #maybe looker node trigger
- [ ] #maybe tripwire activation
- [x] grunk heartbeat
- [x] grunk chittering
- [ ] grunkbeast???
- [x] grunk ambiance
- [x] spaceship ambiance
- [ ] #maybe crew quarters ambiance
- [ ] #maybe medbay ambiance
- [ ] #maybe ops ambiance
- [ ] #maybe cargo bay ambiance
- [ ] #maybe grunk node ambiance
- [ ] models:
- [ ] [[grunk]] nodes:
- [ ] [[alarm]]
- [ ] [[trigger]]
- [x] [[alarm]]
- [x] [[trigger]]
- [ ] [[heart]]
- [ ] [[relay]]
- [ ] [[tripwire]]
- [ ] [[looker]]
- [ ] #maybe [[tripwire]]
- [ ] #maybe [[looker]]
- [ ] [[listener]]
- [ ] common props:
- [x] wall switch
- [ ] secure switch
- [ ] retinal scanner
- [x] bulkhead
- [ ] datapad
- [x] overhead light fixture

View File

@ -97,4 +97,10 @@
- author: zolopher
- CC0
- retrieved from https://freesound.org/people/zolopher/sounds/44203/
- assets/sfx/grunk/splat*.wav
- assets/sfx/grunk/splat*.wav
- "shower.mp3"
- author: geodylabs
- CC BY 4.0
- retrieved from https://freesound.org/people/geodylabs/sounds/122810/
- assets/sfx/tools/spray.wav
- modified