Developedia
Developedia
Hangok a Unity-ben

Hangok a Unity-ben

Hangok kezeléséhez legalább kettő komponensre van szükségünk.

  • AudioListener
  • 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.

  • AudioSource
    1. 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:

    2. Play On Awake: Lejátszás indítása a komponens létrejöttekor.
    3. Loop: Ciklusban játssza a hangfájlt. Ha véget ér, kezdje mindig újra és újra.
    4. Volume: Relatív hangerő a játék többi hangjához képest
    5. Mute: Némítás
    6. Pitch: A hangmagasság (1 az eredeti)
    7. 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.

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.

Logo

Főoldal

Blog

Elmélet

3D Studio

Adatvédelmi nyilatkozat

GY.I.K.

Házirend

Szerző: Marosi Csaba / marosi.csaba@3d-studio.hu

DiscordGitHubLinkedIn