Hangok kezeléséhez legalább kettő komponensre van szükségünk.
- AudioListener
- AudioSource
- Play On Awake: Lejátszás indítása a komponens létrejöttekor.
- Loop: Ciklusban játssza a hangfájlt. Ha véget ér, kezdje mindig újra és újra.
- Volume: Relatív hangerő a játék többi hangjához képest
- Mute: Némítás
- Pitch: A hangmagasság (1 az eredeti)
- Spatial Blend: Itt állítható be, hogy mennyire legyen térbeli a hang.
- 2D: A hang egyszerűen lejátszódik. Az AudioListener mindig ugyanúgy hallja.
- 3D: A hang térbeli. A lejátszást befolyásolja, hogy milyen távol van a hang az AudioListener-től, milyen sebességgel halad hozzá képest (doppler effektus), és milyen irányból érkezik. A 3D hang részletes beállításához a komponens alján egy lenyitható extra menüben férsz hozzá.
- A fenti két lehetőséget egy skálán tudjuk állítani. 0-teljes 2D, 1-teljes 3D, bármi ezen két érték között vegyíteni fogja a 2D és 3D hangot.
Ez a játékosunk füle a játékban. Újonnan létrehozott scene-ekben automatikusan szerepel is a Camera GameObject-en.
Ennek a komponensnek nincs semmi beállítása.
Azért érdemes a Camera komponenssel egyazon GameObject-re tenni, mert így a játékos szeme és füle nagyjából egy helyen lesz. 3D hangok esetén számít az AudioListener pozíciója.
Ez a komponens le tud játszani egy audio fájlt. Az, hogy ebben a hangfájlban mit tartunk az a komponens szempontjából nem lényeges. Lehet hangeffekt, aláfestő hatás de a játék egyik zenéje is.
Ez a hangfile az AudioSource komponens legelső beállítása. Erre szükségünk van valahol az Asset mappán belül.
Egyéb fontos beállítások:
Egy AudioSource-ot nem feltétlenül úgy szeretnénk használni, hogy a komponens létrejöttekor egyből játszódjon is le. Ebben az esetben manuálisan indítható a hang kódból. Ehhez természetesen kell lennie egy referenciánkak az AudioSource komponensre.
AudioSource audioSource = GetComponent<AudioSource>();
// Máshonnan is származhatna referencia
audioSource.Play(); // Lejátszás indítása
audioSource.Stop(); // Lejátszás leállítása
audioSource.Pause(); // Lejátszás szüneteltetése
audioSource.UnPause(); // Lejátszás folytatása
audioSource.PlayDelayed(0); // Lejátszás késleltetve
Ezen kívül persze bármilyen a komponensen az Inspector-ból elérhető beállítás kódból is módosítható.
audioSource.volume = 1; // Hangerő beállítása
audioSource.pitch = 1; // Hangmagasság beállítása
audioSource.spatialBlend = 0.5f; // Hanghelyzet beállítása
//...
Hangok effektek-jei
Ahhoz, hogy a hang bármi módon módosuljunk használhatunk AudioMixer-t
Különböző AudioFilter komponensekkel szabályozhatjuk, egyedileg a hangzást effektekkel.
- Audio Reverb Filter - Sok beállítást tartalmaz
- Audio Echo Filter - ⛰️ Visszhang ⛰️
- Audio Distortion Filter - ⚡🎸🤘 Elektromos torzítás🤘 🎸⚡
- Audio High & Low Pass Filter - Felső és alsó frekvencia korlátozás
Ezen filtereket hozzáadhatjuk egyedi AudioSource-okhoz vagy AudioListener-hez. Előbbi esetben csak egy-egy egyedi hang fog módosulni, utóbbiban az összes, amit csak hall a listenerekhez.
Reverb Zone komponensekkel pedig, felvehetünk speciális területeket, amikben a hangzást valamilyen effekt szerint módosítjuk. Ezen területekbe ha belép az AudioListener, akkor alkalmazva lesz rá az effekt. A területek szélei nem feltétlenül élesek. Ezáltal beállíthatjuk, milyen távon változzon a hangzás.
Több Reverb Zone és Reverb Filter esetén a beállítások értékei súlyozva átlagolódnak.
Nagyobb kontrolunk lehet az effektek felett, ha Audio Mixer Assetet használunk, amit azok létrehozása után az egyes AudioSource-okhoz rendelhetünk.
Az Audio Mixerek beállításaival részletesebben ezen a kurzuson nem foglalkozunk.