LolikZabijaka Opublikowano 19 Stycznia 2009 Udostępnij Opublikowano 19 Stycznia 2009 Cześć mam problem, otóż pocisk przebija się przez ścianę "solid" Próbowałem różnych metod : Nadanie obydwu obiektom właściwości "solid" zwiększenie dystansu tworzenia pocisku dodam jeszcze że pocisk ma prędkość 30 Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Jaklub Opublikowano 19 Stycznia 2009 Udostępnij Opublikowano 19 Stycznia 2009 pocisk ma prędkość 30 collision_line - sprawdź to. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 19 Stycznia 2009 Administratorzy Udostępnij Opublikowano 19 Stycznia 2009 Jeżeli ma prędkość 30, a ściana ma 16, to zauważmy, że to tak samo jakby wykonać akcję:x = x+30; Zatem pocisk przez ścianę... przeskakuje xD Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Maximal Opublikowano 19 Stycznia 2009 Udostępnij Opublikowano 19 Stycznia 2009 Dlatego właśnie tak trudno jest zaimplementować precyzyjną kolizję przy obiektach poruszających się z dużą prędkością. :) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
LolikZabijaka Opublikowano 19 Stycznia 2009 Autor Udostępnij Opublikowano 19 Stycznia 2009 collision_line - sprawdź to. o co chodzi z tym colision line ? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Jaklub Opublikowano 19 Stycznia 2009 Udostępnij Opublikowano 19 Stycznia 2009 o co chodzi z tym colision line ? collision_line - sprawdź to. Sprawdź w helpie. Wykryjesz kolizję w linii x,y pocisku - xprevious,yprevious pocisku, czy jakiejś ściany nie ma i fajrant. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Pental Stary Opublikowano 19 Stycznia 2009 Udostępnij Opublikowano 19 Stycznia 2009 Trudno? Głupoty gadacie :) . Dla przykładu, jak zrobić snajperkę (zakładamy, że nieważne jak daleko, strzał doleci od razu)? i = 0; while( 1 ) { _x = x + lengthdir_x( direction, i ); _y = y + lengthdir_y( direction, i ); if ( colision_line( x, y, _x, _y /* bla bla bla... */ ) ) break; else i += 1; } // tu, co sie stanie, jak doleci Nic trudnego :) . A jeśli szybkość ma być ograniczona, to: i = 0; while( 1 ) { _x = x + lengthdir_x( direction, i ); _y = y + lengthdir_y( direction, i ); if ( colision_line( x, y, _x, _y /* bla bla bla... */ ) ) || ( i >= maxspeed ) break; else i += 1; } // tu, co sie stanie, jak doleci Prościzna :D . Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
LolikZabijaka Opublikowano 19 Stycznia 2009 Autor Udostępnij Opublikowano 19 Stycznia 2009 o , Pental skorzystam z Twojego patentu :D a o co biega z tym bla bla bla ? o co biega z tym notme ?? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Hunter Opublikowano 19 Stycznia 2009 Udostępnij Opublikowano 19 Stycznia 2009 notme to to samo co not me czyli czy obiekt w ktorym ma byc akcja ma byc uwzgledniany Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Pental Stary Opublikowano 19 Stycznia 2009 Udostępnij Opublikowano 19 Stycznia 2009 Powpisuj tam bez sensu jedynki, jak będzie problem, to wtedy najwyżej może cię to obchodzić :D . Cóż, rada może nie najlepsza, ale jak ktoś jest leniwy, jak ja, to nawet te 20 sek. go zbawi :P . A tak na serio - jeśli w notme wpiszesz jeden, znaczy, że pod uwagę mamy brać też ten obiekt, z którego ten kod jest wywoływany. W tym wypadku - wpisz 0. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Jaklub Opublikowano 19 Stycznia 2009 Udostępnij Opublikowano 19 Stycznia 2009 Pental: Drugi kod tak za bardzo nie ma sensu - może sobie lecieć pocisk normalnie ze speedem, ale sprawdzając collision_line(x,y,xprevious,yprevious,...). Poza tym nikt nie mówił, że trudno. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Maximal Opublikowano 19 Stycznia 2009 Udostępnij Opublikowano 19 Stycznia 2009 @Pental: Zauważ, że on mówi o poruszającym się pocisku, więc w tym przypadku sprawdzanie musiałoby następować co stepa. Dolicz do tego obliczanie, w którym dokładnie punkcie obiekt ma się zatrzymać i masz spadek wydajności. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Pental Stary Opublikowano 19 Stycznia 2009 Udostępnij Opublikowano 19 Stycznia 2009 Oj, masz rację, nie zauważyłem, że jak to wstawimy w step, to już po pierwszym kroku wykona się akcja - bo w pierwszym breakiem można to było załatwić. Ale myślę, że dopisanie jednej linijki kodu nikogo nie zbawi :P . Max, masz rację, ale w sumie, zazwyczaj to to strzał ze strzelby wyborowej, więc nie widzę problemu, gdyby spritem był jeden pixelek :D . Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
LolikZabijaka Opublikowano 19 Stycznia 2009 Autor Udostępnij Opublikowano 19 Stycznia 2009 wyskakuje mi unknown function on scrip collision line Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Pental Stary Opublikowano 19 Stycznia 2009 Udostępnij Opublikowano 19 Stycznia 2009 Bo dałem tylko teorię, byle co napisałem, byle, by pokazać jak to zrobić. Nie chce mi się teraz GMa włączać, ale w te 5 min. byś sam może to zrobił :P . Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Jaklub Opublikowano 19 Stycznia 2009 Udostępnij Opublikowano 19 Stycznia 2009 wyskakuje mi unknown function on scrip collision line Masz piętnaście lat, znajdź sobie poprawną nazwę tej funkcji, nie zajmie ci to dłużej niż 5-10 sekund... Poza tym, nie przepisywałeś tego komentarza bla bla? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
LolikZabijaka Opublikowano 19 Stycznia 2009 Autor Udostępnij Opublikowano 19 Stycznia 2009 okej mam już poprawną nazwę nie nie przepisywałem komentarza GML ( collision_line( x,y,xprevious,yprevious,blockparent,notme ) ) i co mam wpisać zamiast notme ? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Jaklub Opublikowano 19 Stycznia 2009 Udostępnij Opublikowano 19 Stycznia 2009 i co mam wpisać zamiast notme ? Hunter ci opisał, wpisz sobie chyba 1. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
LolikZabijaka Opublikowano 19 Stycznia 2009 Autor Udostępnij Opublikowano 19 Stycznia 2009 Nie, 1 to chyba nie to bo wyskakuje : wrong number of arguments to function or script Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Pablo-GM Opublikowano 19 Stycznia 2009 Udostępnij Opublikowano 19 Stycznia 2009 Zapomnieliscie o argumencie object :) collision_line(x1,y1,x2,y2,object,prec,notme) :D Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
LolikZabijaka Opublikowano 19 Stycznia 2009 Autor Udostępnij Opublikowano 19 Stycznia 2009 GML i = 0; while( 1 ) { _x = x + lengthdir_x( direction, i ); _y = y + lengthdir_y( direction, i ); ( collision_line(x,y,xprevious,yprevious,blockparent,blockparent,1 ) ) else i += 1; } instance_destroy i kiedy włączam grę to wyskakuje mi "else" variable name expected Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Japanstache Opublikowano 19 Stycznia 2009 Udostępnij Opublikowano 19 Stycznia 2009 Chyba zapomniałeś break; między collision_line a else dać. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
LolikZabijaka Opublikowano 19 Stycznia 2009 Autor Udostępnij Opublikowano 19 Stycznia 2009 tylko że jak było break to też wyskakiwało "break" variable name expected Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Japanstache Opublikowano 19 Stycznia 2009 Udostępnij Opublikowano 19 Stycznia 2009 Oj Ty leniwy wieprzku, nie porównywałeś kodu swojego z podanym? Zjadłeś break i if. GML i = 0; while( 1 ) { _x = x + lengthdir_x( direction, i ); _y = y + lengthdir_y( direction, i ); if ( collision_line(x,y,xprevious,yprevious,blockparent,blockparent,1 ) ) break; else i += 1; } instance_destroy Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
PoxiPol Opublikowano 19 Stycznia 2009 Udostępnij Opublikowano 19 Stycznia 2009 A skad wiesz? Sprawdz to, tez mi sie tak wydaje. I widzisz? Stasiu tobie ladnie pomogl :) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Marek.S Opublikowano 19 Stycznia 2009 Udostępnij Opublikowano 19 Stycznia 2009 https://forum.gmclan.org/index.php?showtopic=15887&hl= 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ę