Soinua gure bideojokuan

Gure bideojokuan soinua sartzeko modu desberdinak daude. 
  •  Digipeneko laguntzan tutorial bat aurkituko duzue audioa sartzeko. Seguraski, modurik zuzenena izango da, baina nahiko konplikatua da. 
  • Bestalde, hemen ipiniko dizuet audioa sartzeko modu sinpleago bat. Hori bai, behin audioa martxan ipini dugula buklean jotzeko, jada ez da geratuko level batetik bestera pasatzerakoan... Mugatuagoa da baina azkar egiteko modukoa.

AUDIOAK (.wav)

Hasteko, sortu edo bilatu beharko dituzu jolasean ipiniko dituzun audioak, noski, copyright gabekoak! Audio libreak bilatu
Soinu efektuak : Fiftysounds 
Nahi baduzu, hemendik deskarga ditzakezu nik frogetarako erabili izan ditudanak. 

SOUND eta SOUNDCUE errekurtsoak 


Ondoren, soinuak inportatuko 
dituzu zure proiektuan. Inportatzerakoan, Sound motako objektua inportatu eta aukeretan "GenerateCue=None" ipini. (ikusi irudia)
Orain Music1, Music2, CoinPickup eta ScoreV2 izeneko errekurtsoak izango dituzu Libraryn, Sound izeneko etiketa aukeratzen baduzu, froga jarraitzen ari bazara. Bestela, zuk inportatutako audio artxiboen izenak agertuko zaizkizu bertan.

Orain SoundCue motako errekurtsoak sortuko dituzu. SoundCue objektuak (soinu pistak) dira exekutatuko direnak. SoundCue bakoitzak Sound motako zenbait objektu izan ahal ditu egokituta, ala Sound bakarra. 
Froga jarraitzen ari bazara, sortu SoundCue bat soinu bakoitzeko eta SoundCue-ren izena zuk aukeratu adierazgarria izan dadin. Froga honetan, Music1 edo Music2 soinuak jolasean zehar entzungo diren audioak izango direnez, GameCue izeneko SoundCue-a sortuko dugu. Bere ezaugarrietan (Properties) Sounds osagaian "Add SoundEntry..." sakatu eta gehitu dagokion Sound errekurtsoa (Music1 edo Music2) Kasu honetan, "PlayMode=Looping" ipini denbora guztian jotzen egon dadin. Beste ezaugarriak dauden moduan utzi ditzakezu. Entzun nahi baduzu nola geratuko den, "Preview" botoia sakatu.

Beste bi soinuentzako ere, SoundCue bana sortuko dugu: 

  • IncreasePointsCue: CoinPickUp audioa izango duena Sounds osagaian. 

  •  ChangeLevelCue: ScoreV2 audioa izango duena Sounds osagaian.

Argi dago froga honetan CoinPickUp soinua entzungo dela puntuak lortzen ditugunean (txanponak hartu, etsaiak hil....) eta ScoreV2 audioa entzungo dela level batetik bestera pasatzerakoan, ez? Bi hauetan "PlayMode=Single" ipiniko dugu, hau da, behin soilik jo dadin soinua, errepikatu gabe.

SoundCue batetan, Sound bat baino gehiago sar daitezke jarraian exekuta daitezen, edo aleatorioki... baina gure kasuan ez dugu halakorik egingo. 

 Space objektua

 Jokuetan, Game objektu bat dago beste objektu guztiak barne dituena. Space motako objektu bat dago Game horretan, non osagai desberdinak dauden, haien artean SoundSpace delakoa. Horrek exekutatuko ditu SoundCue-ak ondoko komandoaren bidez:

this.Space.SoundSpace.PlayCue(SoundCue.SoundCueName

non SoundCueName, exekutatu behar duen SoundCue-aren izena den. Hau, gure kodean non jarriko dugu? Ba soinua entzun beharreko lekuan.

Adibidez, demagun etsai bat hiltzerakoan nahi dugula puntuak gehitu eta "CoinPickUp" soinua entzun dadila. Orduan, etsaiarekin talka egiterakoan, etsaia desagertarazi ondoren, puntu bat gehitu eta  "this.Space.SoundSpace.PlayCue(SoundCue.IncreasePointsCue); " komandoa idatziko dugu.(CollisionLogic ZilchScriptean seguruenik)

Edo Level batetik hurrengo levelera pasatzerakoan nahi badugu "ScoreV2" soinua entzun dadila, orduan levela aldatzeko komandoaren ondoren "this.Space.SoundSpace.PlayCue(SoundCue.ChangeLevelCue);" komandoa idatziko dugu, (CollisionLogic ZilchScriptean seguruenik ere.)

MUSIKA JOLASEAN ZEHAR

Modu sinplea (Soinu bera jolas osoan zehar)

Jolasa hasi bezain laister GameCue soinu pista jotzen has dadin, "this.Space.SoundSpace.PlayCue(SoundCue. GameCue);" komandoa idatziko dugu. 

Eta hau non? Ba sortu ahal dugu "SoinuaKontrolatu" izeneko ZilchScript bat Space objektuari esleituko dioguna ondoko kodea izango duena:

class SoinuaKontrolatu : ZilchComponent

{

  function Initialize(init : CogInitializer)

  {

    // "GameCue" soinua martxan ipini

    this.Space.SoundSpace.PlayCue(SoundCue.GameCue);

    Zero.Connect(this.Space, Events.LogicUpdate, this.OnLogicUpdate);

  }

  function OnLogicUpdate(event : UpdateEvent)

  {

    if (Zero.Keyboard.KeyIsDown(Keys.Space))

    {  //Musika geratu edo jarraitu

      this.Space.SoundSpace.Paused=!this.Space.SoundSpace.Paused;

    }

    if (Zero.Keyboard.KeyIsDown(Keys.PageUp))

    {  //Bolumena handitu

      this.Space.SoundSpace.Volume+=0.5;

    }

    if (Zero.Keyboard.KeyIsDown(Keys.PageDown))

    {  //Bolumena jeitsi

      this.Space.SoundSpace.Volume-=0.5;

    }

  }

}

Ikusten duzunez, jolasaren audioa martxan jartzeaz gain, script honen bidez jolaseko audioa mututu edo aktibatu daiteke "Espazio" tekla sakatuz, eta baita bolumena igo edo jeitsi daiteke "PageUp" eta "PageDown" teklen bidez. 
Noski, teklak aldatu ahal dituzu zuk nahi dituzunak ipintzeko!
Eta ez baduzu halakorik nahi, komentatu Initialize funtzioan LogicUpdate mezuaren Zero.Connect komandoa eta kitto!

Modu ez hain sinplea (Audio desberdina level bakoitzean)

Kasu honetan Soinuaren kudeaketa ZilchScripta erabiliko dugu.

1-Hasi baino lehen Space arketipoa duplikatuko duzu eta kopiari MusicSpace izena ipiniko diozu.

2-Ziurtatu inportatu dituzula jolasean zehar entzun beharko diren soinuak eta SoundCue desberdinak dituzula. (Ipini dezakezu sortutako level bakoitzeko soinu desberdin bat)

3- Deskargatu SoinuarenKudeaketa Content Package eta inporta ezazu zure jolasean.(Resources=>Import Content Package) 

    Barruan ZilchScript bat aurkituko duzu: SoinuarenKudeaketa.

4- Esleitu script hau Game arketipoari eta konfiguratu Propertyak zuk nahi duzun moduan funtzionatzeko. Irakurri ondo kodea eta uste baduzu aldaketak egin behar dituzula zure jolasera adaptatzeko, egizuz.

Kodea ikusten baduzu, audio bat exekutatzen hasi aurretik konprobatzen da ea MusicSpace arketipoa jada existitzen den eta hala bada hau desagertarazten da eta berriz sortzen da musika berria exekutatzeko. Hau guztia LevelStarted  mezua harrapatuz egiten da ziurtatuz level berria jada osorik kargatu dela kodea exekutatzen hasi aurretik.






iruzkinik ez:

Argitaratu iruzkina

Idatzi zure komentarioa. Laster argitaratuko dut. Mila esker!