Diskuze: 3D zvuky ve 2D hře

Ostatní jazyky GameMaker GameMaker 3D zvuky ve 2D hře

Avatar
lemonko
Člen
Avatar
lemonko:

zdravím,

vytvářím si 2D zombie hru a chtěl bych udělat zvuky pro zombi, ale tak, aby když zombie bude nalevo tak ho uslyším v levém sluchátku a když napravo tak v pravém sluchátku a když bude moc daleko tak ho neuslyším vůbec.
Děkuju za rady

 
Odpovědět 8.3.2015 12:55
Avatar
jargry
Člen
Avatar
Odpovídá na lemonko
jargry:

Nevím v čem děláš (já dělám jen v PETRovi), ale poměr mezi levým a pravým je stereováha a vzdálenost pak hlasitost.

 
Nahoru Odpovědět 8.3.2015 19:15
Avatar
Dominik Hošic
Redaktor
Avatar
Odpovídá na lemonko
Dominik Hošic:

Zvuk začneš přehrávat takto:

audio_falloff_set_model(audio_falloff_exponent_distance);
audio_play_sound_at(tvůj sound, x, y, 0, 100, 200, 1, 1, 10);

a ještě je si musíš nastavit listenera, takže třeba do Step Eventu stejného objektu:

audio_listener_position(objekt_hrac.x, objekt_hrac.y, 0);

Zadal jsem parametry, které si myslím, že ti budou vyhovovat.
Podrobněji si o těchto funkcích můžeš přečíst zde:

http://docs.yoyogames.com/…t_model.html

http://docs.yoyogames.com/…ound_at.html

http://docs.yoyogames.com/…osition.html

Nahoru Odpovědět  +1 8.3.2015 19:52
Klient: Nefunguje mi internet co s tím uděláte? Operátor: a co vidíte na monitoru? Klient: No signal...
Avatar
Neaktivní uživatel:

Ahoj,

předně Ti doporučím přejít na sga sound system, běží pod OpenAll, podporuje nahrání externích zdrojů (velký problém gms, funkce audio_add(bla,bla,bl­a) není.)

Jinak řešení páně Hošice je správné, pokud ale bude tvůj projekt trochu větší přejdi na sga, případně jeho ekvivalent. Nechceme přece aby se hra kompilovala pět minut a aby velikost exe aplikace nebezpečně rostla, že ne. ;)
Vše co můžeš ukládej externě, případně ještě zašifruj.

Pozice už je tu vyřešená, takže k druhé části otázky (řešení pro sga):

// Při přehrání zvuku:
dist = 1
dist -= (distance_to_object(oPlayer)/300)
fx(oVariableController.sndZombie)
sga_SetVol(oVariableController.sndZombie,dist)

Předpokládá definovaný objekt oVariableContro­ller, ve kterém je následující:

//create
sga_Init();
sndBolt =  sga_CreateFX("Sounds/sndBolt.wav", 0 );

Nezapomeň že pro implementaci sga potřebuješ jak samotnou sga.dll, tak i OpenAll32.dll
Sga také podporuje pouze .wav (pro zvukové efekty) a .ogg (pro dabing,hudbu) soubory.

Hodně zdaru :)

Editováno 8.3.2015 20:49
Nahoru Odpovědět 8.3.2015 20:44
Neaktivní uživatelský účet
Avatar
Odpovídá na Neaktivní uživatel
Neaktivní uživatel:

Edit:

drobnost, v objektu oVariableContro­ller:

//create
sga_Init();
sndZombie =  sga_CreateFX("Sounds/sndZombie.wav", 0 );

Fuknkci fx si definuješ pouhopouhým odkazem na funkci knihovny (její zkráceninou):

with(oVariableController)
   {
   sga_PlayFX(argument0)
   }
Editováno 8.3.2015 20:52
Nahoru Odpovědět 8.3.2015 20:50
Neaktivní uživatelský účet
Avatar
lemonko
Člen
Avatar
lemonko:

děkuju moc

 
Nahoru Odpovědět 9.3.2015 7:01
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 6 zpráv z 6.