82 lines
2.3 KiB
C#
82 lines
2.3 KiB
C#
using UnityEngine;
|
|
|
|
public class SuaraMesinMobil : MonoBehaviour
|
|
{
|
|
[Header("Pengaturan Audio")]
|
|
public AudioSource mesinAudioSource;
|
|
|
|
[Tooltip("Pitch saat mobil diam (suara berat)")]
|
|
public float pitchDiam = 0.5f;
|
|
|
|
[Tooltip("Pitch maksimal saat ngegas penuh")]
|
|
public float pitchGas = 1.6f;
|
|
|
|
[Tooltip("Kecepatan transisi naik/turun suara.")]
|
|
public float kecepatanTransisi = 5f;
|
|
|
|
private bool sedangNgegas = false;
|
|
private bool isKuisAktif = false;
|
|
private float volumeAwal = 1f;
|
|
private bool isGameFinished = false; // [TAMBAHAN] Flag untuk mendeteksi game selesai
|
|
|
|
void Start()
|
|
{
|
|
if (mesinAudioSource != null)
|
|
{
|
|
mesinAudioSource.pitch = pitchDiam;
|
|
volumeAwal = mesinAudioSource.volume;
|
|
mesinAudioSource.Play();
|
|
}
|
|
}
|
|
|
|
void Update()
|
|
{
|
|
// [TAMBAHAN] Jika game sudah finish atau AudioSource kosong, langsung hentikan fungsi Update
|
|
if (isGameFinished || mesinAudioSource == null) return;
|
|
|
|
float delta = Time.unscaledDeltaTime;
|
|
|
|
if (isKuisAktif)
|
|
{
|
|
mesinAudioSource.volume = Mathf.Lerp(mesinAudioSource.volume, 0f, delta * 10f);
|
|
mesinAudioSource.pitch = Mathf.Lerp(mesinAudioSource.pitch, pitchDiam, delta * kecepatanTransisi);
|
|
}
|
|
else
|
|
{
|
|
mesinAudioSource.volume = Mathf.Lerp(mesinAudioSource.volume, volumeAwal, delta * 5f);
|
|
float targetPitch = sedangNgegas ? pitchGas : pitchDiam;
|
|
mesinAudioSource.pitch = Mathf.Lerp(mesinAudioSource.pitch, targetPitch, delta * kecepatanTransisi);
|
|
}
|
|
}
|
|
|
|
public void GasDitekan()
|
|
{
|
|
if (!isKuisAktif && !isGameFinished) sedangNgegas = true;
|
|
}
|
|
|
|
public void GasDilepas()
|
|
{
|
|
sedangNgegas = false;
|
|
}
|
|
|
|
public void SenyapkanMesin(bool senyap)
|
|
{
|
|
isKuisAktif = senyap;
|
|
if (senyap)
|
|
{
|
|
sedangNgegas = false;
|
|
}
|
|
}
|
|
|
|
// [TAMBAHAN] Fungsi khusus untuk dipanggil saat menyentuh Finish
|
|
public void MatikanMesinTotal()
|
|
{
|
|
isGameFinished = true;
|
|
sedangNgegas = false;
|
|
if (mesinAudioSource != null)
|
|
{
|
|
mesinAudioSource.Stop(); // Matikan suara seketika
|
|
}
|
|
this.enabled = false; // Nonaktifkan script
|
|
}
|
|
} |