Qubatron15 Opublikowano 3 Listopada 2012 Udostępnij Opublikowano 3 Listopada 2012 Witam! Od jakiegoś miesiąca tworzę jedną grę, jednakże trafiłem na problem, któego nie potrfafię rozwiązać. Jest on następujący: Poruszanie bohaterem oparłem na zasadzie funkcji jump_to_position, tzn. gdy wciśniety jest klawisz W, obiekt bohatera przeskakuje o 3 lub o 8 pikseli w górę (zależnie od tego czy trzymany jest jednocześnie klawisz SHIFT czy też nie). Kłopot jest w tym, że nie mam pojęcia, jak zrobić, by bohater "ślizgał się" po ścianach, gdy wpadnie na nie pod kątem różnym od prostego. Szukałam rozwiązania na forum i znalazłem takowe: COLLISION obiektu bohatera (obj_player) ze ścianą obj_wall_vertical: if(keyboard_check(ord('A')) && place_free(x-jump,y)) { x=x+jump; //jump to zmienna długości skoku (przyjmuje wartość 3 lub 8) } if(keyboard_check(ord('D')) && place_free(x+jump,y)) { x=x-jump; } if(keyboard_check(ord('W')) && place_free(x,y-jump)) { y=y+jump; } if(keyboard_check(ord('S')) && place_free(x,y+jump)) { y=y-jump; } Działa jednak ono niezgodnie z oczekiwaniami, a konkretnie, gdy obj_player wpadnie na ścianę obj_wall_vertical, to zatrzymuje się i już. Nie można nim ruszyć w żadną stronę, dopóki nie odkleimy się od ściany. Był bym wdzięczny za pomoc. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Threef Opublikowano 3 Listopada 2012 Udostępnij Opublikowano 3 Listopada 2012 W tym tutorialu masz to ładnie wytłumaczone. Tutorial: A First Person Shooter Chociaż tam chyba to się opiera na vspeed i hspeed, ale powinieneś sobie poradzić. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Qubatron15 Opublikowano 5 Listopada 2012 Autor Udostępnij Opublikowano 5 Listopada 2012 Nie chciałem zakladać nowego tematu. Ma ktoś pomysł, jak mogę sprawić, by obiekt obj_spider wykonał akcje co klatke (konkretnie zwiększenie wartości zmiennej o 1) będąc w kolizji z obiektem obj_seeing_front, ale jednocześnie NIE BEDĄC w kolicji z obiektem obj_shadow? Wykonałem to w ten sposłb: COLLISION obiektu obj_spider z obiektem obj_seeing_front: if(distance_to_object(obj_shadow)>0) { fear_timer+=1; } Nie działa to jednak poprawnie, gdyż akcja ta wykonuje się wtedy, gdy obj_spider jest w odległości ok. 150 pikseli od obj_shadow. Jeśli ma to znaczenie, to obj_shadow w trakcie gry obraca się i ma kształt prostokąta z osią obrotu znajdującą się na krótszej krawędzi. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Skull Opublikowano 5 Listopada 2012 Udostępnij Opublikowano 5 Listopada 2012 collision_point ? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Qubatron15 Opublikowano 7 Listopada 2012 Autor Udostępnij Opublikowano 7 Listopada 2012 A mógłby ktoś powiedzieć, jak z tej funkcji powinienem skorzystać? Przejżałem juz chyba całe foru i tutoriale ale nie znalazłem pomocy. W Help`ie z GM też jest niewiele. Jeśłi dobrze rozumiem: collision_point(x,y,obj,prec,notme) gdzie: x, y - współrzędne miejsca kolizji (w moim przypadku obj_spider.x, obj_spider.y) obj - obiekt, z któym wykrywamy kolizję (w moim przypadku obj_shadow) prec, notme - nie mam pojęcia, co oznaczają te parametry. I by wykryć brak kolizji powinienem stworzyć następujacego if'a: if(collision_point(x,y,obj,prec,notme)==false) { <akcja> } Dobrze to rozumiem? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 7 Listopada 2012 Administratorzy Udostępnij Opublikowano 7 Listopada 2012 prec - czy precyzyjne notme - czy wykluczyc siebie samego (jesli szukamy obiektow tego samego typu) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Qubatron15 Opublikowano 7 Listopada 2012 Autor Udostępnij Opublikowano 7 Listopada 2012 I te parametry mogą przyjmować jedynie wartości 0 lub 1? Tzn. jeśłi chcę by było precyzyjne: prec=1, przeciwnie, prec=0 i tak samo w przypadku notme? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
I am Lord Opublikowano 7 Listopada 2012 Udostępnij Opublikowano 7 Listopada 2012 prec - czy precyzyjne Toś mu powiedział. Znowu nie zrozumie. Precyzyjnie to znaczy że będzie sprawdzany kształt maski sprita. Jak ustawisz false to sprawdzi tylko bounding box maski. 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ę