Ignatus Opublikowano 21 Maja 2015 Udostępnij Opublikowano 21 Maja 2015 Witam.Banalna sprawa ale znów (jak to w moim przypadku przy banalnych sprawach) wstrzymuje mi pracę od dobrych kilku godzin Platformówka.Postać wpada na kolce- w momencie wpadnięcia odgrywamy dźwięk nabicia na kolce- oczywiście ma być odegrany tylko jeden raz. Przy zwykłym włączeniu dźwięku przy kolizji jest oczywiście karabin maszynowy zamiast dźwięku,tego też się spodziewałem Wszędzie mamy: Kolizja z obiektem kolce GML spiked=true GML Object_player step sprite_index=spr_spiked // animacja smierci na kolcach Jak na razie podjąłem takie próby: 1. GML if (spiked=true){if !audio_is_playing(snd_spiked) {audio_play_sound(snd_spiked,15,false)}} // Zamiast karabinu mamy odtworzenie 3-4 razy dzwieku- nadal do bani 2.Tak samo jak poprzednio ale z dodatkową zmienną spike_sound GML if (spiked=true) && (spike_sound=true){if !audio_is_playing(snd_spiked) {audio_play_sound(snd_spiked,15,false) spike_sound=false}} lub GML if (spiked=true) && (spike_sound=true){audio_play_sound(snd_spiked,15,false) spike_sound=false} // Taki sam efekt jak poprzednio 3.Z tym wiązałem największe nadzieje-uzależnienie dźwięku od klatki animacji GML if (sprite_index=spr_spiked)&&(image_index=1) {audio_play_sound(snd_spiked,15,false)} // Tutaj efekt najciekawszy bo odgrywa się tak jak powinno ale... raz na kilka prób.W zasadzie losowo, na 50 prób może z 20 się odegra dźwięk ,reszta cisza-przy identycznych próbach dźwięk raz jest raz nie.Próbowałem różnych wariantów tej opcji (image_index> lub image_index<) klatek animacji jest 18- niestety zmiana niewielka, ewentualnie większa szansa na odegranie-ale na pewno nie zawsze(albo znów kilka razy) Jak Wy to robicie w Waszych grach? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Gibki Kaktus Opublikowano 21 Maja 2015 Udostępnij Opublikowano 21 Maja 2015 Gdzie wgl trzymasz te próby? Spróbuj tak: Create gracz GML odegral=0 Kolizja: GML spiked=true; if other.odegral=0 { audio_play_sound(snd_spiked,15,false); odegral=1; } Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 22 Maja 2015 Administratorzy Udostępnij Opublikowano 22 Maja 2015 Jak używasz other, to chyba potem też other powinno być? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Threef Opublikowano 22 Maja 2015 Udostępnij Opublikowano 22 Maja 2015 Można to robić w ten sposób. Masz kolizję z kolcami. Event ten powtarza się ciągle gdy jest kolizja. GML if (spiked=false){audio_play_sound(snd_spiked,15,false)} spiked=true Biorąc pod uwagę że zmienna spiked zmienia stan na true dopiero w czasie pierwszego wykonania kolizji i robi to dopiero po sprawdzeniu warunku który ma odgrywać dźwięk, to dźwięk odegra się tylko raz. Oczywiście gdy kolizja już nie zachodzi trzeba przywrócić spiked=false. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Ignatus Opublikowano 22 Maja 2015 Autor Udostępnij Opublikowano 22 Maja 2015 Niestety nadal mam karabin maszynowy.Mogę ustawić spiked=false ale to nie zmienia faktu że kolizja później nadal zachodzi(przez całą animację śmierci na kolcach)- więc i tak rozpocznie się wszystko na nowo.Próbowałem w stepie i próbowałem w colision event, nic to nie zmienia. Przede wszystkim chciałbym wiedzieć dlaczego manewr z image_index nic nie dał.Wydawało mi się do tej pory że ta funkcja działa na zasadzie np. GML if (image_index=2){akcja} jeżeli zostanie wyświetlony 2 subimage to wykonujemy akcję- czy to działa w inny sposób? Dlaczego tutaj zawodzi(albo raczej działa raz na 3 identyczne próby)? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Threef Opublikowano 22 Maja 2015 Udostępnij Opublikowano 22 Maja 2015 image_index co step jest zwiększany o image_speed, a gdy image_index jest większy (i równy?) image_number wtedy jest odejmowane od niego image_number. Teraz znajdź miejsce w którym masz wpisane image_speed=0.3 i zapytaj się czemu tak rzadko wynosi tyle ile myślisz. ;) Mógłbyś spróbować zaokrąglaćif (floor(image_index)=2){akcja} ale wtedy wracasz to starego problemu "karabinu maszynowego". Przeanalizuj to co dałem w poprzednim poście. Za bardzo mieszasz, a rozwiązanie naprawdę jest banalne. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Ignatus Opublikowano 23 Maja 2015 Autor Udostępnij Opublikowano 23 Maja 2015 Racja Threef, dzięki- nie do końca zrozumiałem poprzedni post, teraz działa Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rekomendowane odpowiedzi
Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto
Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.
Zarejestruj nowe konto
Załóż nowe konto. To bardzo proste!
Zarejestruj sięZaloguj się
Posiadasz już konto? Zaloguj się poniżej.
Zaloguj się