small racing game im working on
Diffstat (limited to 'assets/cars/engine.gd')
-rw-r--r--assets/cars/engine.gd29
1 files changed, 29 insertions, 0 deletions
diff --git a/assets/cars/engine.gd b/assets/cars/engine.gd
new file mode 100644
index 0000000..47d6a59
--- /dev/null
+++ b/assets/cars/engine.gd
@@ -0,0 +1,29 @@
+extends Node3D
+
+@onready var idle := $idle as AudioStreamPlayer
+@onready var low := $low as AudioStreamPlayer
+@onready var med := $med as AudioStreamPlayer
+@onready var high := $high as AudioStreamPlayer
+
+@onready var players: Array[AudioStreamPlayer] = [idle, low, med, high]
+@export var db_curves: Array[Curve]
+@export var pitch_curves: Array[Curve]
+
+@export var car: Car
+
+func _ready() -> void:
+ await get_tree().physics_frame
+ for p in players: p.play()
+
+func _process(_d: float):
+ var r := car.rpm()
+ var n := clampf(r / 500.0, 0, 1)
+# var s := "with n: %.2f" % n
+ for i in 4:
+ players[i].volume_db = (db_curves[i].sample_baked(n) - 50)
+ players[i].pitch_scale = (pitch_curves[i].sample_baked(n) * 2) + .001
+# s += " | %s's: %.2f (%.2f)" % [players[i].name, players[i].volume_db, players[i].pitch_scale]
+ if n > .9:
+ players[-1].pitch_scale = (car.rpm() / 600) + 1
+# print(s)
+