XxMichałxX Opublikowano 18 Marca 2009 Udostępnij Opublikowano 18 Marca 2009 przy kolizji o_enemy1 z o_zawroc: GML if direction=0 then direction=180 if direction=180 then direction=0 wsadzam do rooma dwa obiekty o_zawroc, a miedzy nimi o_enemy1 i on idzie w prawo, dotyka o_zawroc i sie zatrzymuje zamiast zawrocic ;/ edit: zeby bylo latwiej podam caly kod: o_enemy1 Create: GML hp=2 speed=4 image_speed=0.5 o_enemy1 Step: GML if hp<=0 { instance_destroy() } if direction=180 then sprite_index=s_enemy1l if direction=0 then sprite_index=s_enemy1r o_enemy1 Kolizja z o_zawroc: GML if direction=0 then direction=180 if direction=180 then direction=0 no i nie dziala ;/ Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 18 Marca 2009 Administratorzy Udostępnij Opublikowano 18 Marca 2009 To teraz patrz coś napisał: załóżmy, że obiekt ma direction=0; pierwsza linijka kodu to zmienia: if direction=0 then direction=180; teraz obiekt ma direction=180; lecimy po dalszej części kodu, czyli po drugiej linijce if direction=180 then direction=0; warunek się zgadza, bo przed chwilą ustawiliśmy 180 wiec znów ustawiamy direction na 0. Na sam koniec po wykonaniu obu instrukcji mamy to samo co na początku. Więc po pierwsze prawidłowo będzie: GML if direction=0 then direction=180 else if direction=180 then direction=0; Po drugie jeżeli kolizja zachodzi dłużej niż 1 step, to i tak guzik da, więc ja bym proponował przy kolizji: GML if direction=0 then direction=180 else direction=0; x=xprevious; y=yprevious; Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
XxMichałxX Opublikowano 18 Marca 2009 Autor Udostępnij Opublikowano 18 Marca 2009 aha no fakt xD thx Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Maxpayn Opublikowano 18 Marca 2009 Udostępnij Opublikowano 18 Marca 2009 Więc po pierwsze prawidłowo będzie: GML if direction=0 then direction=180 else if direction=180 then direction=0; GML direction += 180; Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 18 Marca 2009 Administratorzy Udostępnij Opublikowano 18 Marca 2009 no nie wiem, bo GM chyba sam nie zmienia 360 na 0, wiec po 1000 zmian direction = 180 000 :) a to już nieco zmienia nasze założenia, że direction to coś pomiędzy 0 a 360 :) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Platyna Opublikowano 18 Marca 2009 Udostępnij Opublikowano 18 Marca 2009 No sam nie zmienia. A to nie ma znaczenia żadnego dla GMa chyba czy będzie 360 czy 36000000000 :P Tak mi się wydaje. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 18 Marca 2009 Administratorzy Udostępnij Opublikowano 18 Marca 2009 Wiesz, zmienne real nie są nieskończone. Poza tym, jak napiszesz sobie if direction=180 then {sprite_index=mama} to 180 000 != 180 :) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Platyna Opublikowano 18 Marca 2009 Udostępnij Opublikowano 18 Marca 2009 Tyż prawda :) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Maxpayn Opublikowano 18 Marca 2009 Udostępnij Opublikowano 18 Marca 2009 if direction=180 then {sprite_index=mama} to 180 000 != 180 :) GML if( x < xprevious ) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Jakim Opublikowano 18 Marca 2009 Udostępnij Opublikowano 18 Marca 2009 GML direction = direction mod 360 + 180 Ale w sumie to nie widzę żadnej różnicy, porównywanie w zakresie <0;360> też działa, co można łatwo wykazać. Zatem działanie z użyciem mod nie jest potrzebne. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 18 Marca 2009 Administratorzy Udostępnij Opublikowano 18 Marca 2009 większa liczba = więcej obliczeń. dzielenie z tego co pamiętam w prostych procesorach zabierało 4 razy tyle co dodawanie i odejmowanie. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Jakim Opublikowano 18 Marca 2009 Udostępnij Opublikowano 18 Marca 2009 Faktycznie tak jest, ale spadek fps jest kompletnie niezauważalny przy liczbach tego rzędu. Zresztą, wystarczy zwykłe przypisanie stałej wartości w dowolnej akcji ruchu i wraca się do zakresu 0 - 360. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 18 Marca 2009 Administratorzy Udostępnij Opublikowano 18 Marca 2009 Tak, masz rację, ale nie każdy o tym pomyśli :) 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ę