generated from krampus/template-godot4
Spray sfx is pitch-shifted based on relative angle to player
This commit is contained in:
parent
a8d1128eaf
commit
b60ab2e74f
@ -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:
|
||||
|
@ -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:
|
||||
|
@ -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:
|
||||
|
@ -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
|
Loading…
x
Reference in New Issue
Block a user