Diskuze: 3D zvuky ve 2D hře
V předchozím kvízu, Online test znalostí GameMakeru, jsme si ověřili nabyté zkušenosti z kurzu.

Člen

Zobrazeno 6 zpráv z 6.
V předchozím kvízu, Online test znalostí GameMakeru, jsme si ověřili nabyté zkušenosti z kurzu.
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.
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
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,bla) 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 oVariableController, 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
Edit:
drobnost, v objektu oVariableController:
//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)
}
Zobrazeno 6 zpráv z 6.