diff --git a/autoloads/audio.gd b/autoloads/audio.gd index 5ee8340..1ca9b47 100644 --- a/autoloads/audio.gd +++ b/autoloads/audio.gd @@ -51,9 +51,10 @@ var loop_section = null var has_looped = false #Plays a sound -func play_sound(snd,player): - player.set_stream(snd) - player._set_playing(true) +func play_sound(snd: AudioStream, player: AudioStreamPlayer, pitch: float = 1.0): + player.stream = snd + player.pitch_scale = pitch + player.play() #Play music, if same track is already playing do nothing func play_music(song): diff --git a/objects/collectibles/key.gd b/objects/collectibles/key.gd index 53857c9..825deb0 100644 --- a/objects/collectibles/key.gd +++ b/objects/collectibles/key.gd @@ -1,5 +1,15 @@ extends Node2D +const SEMITONE := 1.05946 +const TIMEOUT := 1000 +const MAX_PITCH := 5.0 + +const STATIC = { + pitch = -2.0, + timeout = -1, +} + + func _ready(): #Sync all coinframes $AnimatedSprite.play() @@ -10,5 +20,11 @@ func _on_Area2D_body_entered(body: Node) -> void: if body.is_in_group("player"): Game.keys += 1 Game.score += 5 - Audio.play_sound(Audio.a_key,Audio.ac_collectible) + # pitch increase + if Time.get_ticks_msec() < STATIC.timeout: + STATIC.pitch = min(STATIC.pitch + 1.0, MAX_PITCH) + else: + STATIC.pitch = -2.0 + STATIC.timeout = Time.get_ticks_msec() + TIMEOUT + Audio.play_sound(Audio.a_key,Audio.ac_collectible, pow(SEMITONE, STATIC.pitch)) queue_free()