cysior Opublikowano 28 Stycznia 2011 Udostępnij Opublikowano 28 Stycznia 2011 Chciałem zrobić sprawdzanie czy dana pozycja jest wolna od obiektu_A(solid), jeśli jest pusta to dana tablica przyjmuje wartość 0. Niestety tak nie jest. STEP, obiekt_B GML for(n=1;n<=9;n+=1) for(m=1;m<=9;m+=1) { if place_free(32+32*n,32+32*m) { global.siatka[n,m]=0 } } Z góry dziękuję za pomoc. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Mentoss Opublikowano 28 Stycznia 2011 Udostępnij Opublikowano 28 Stycznia 2011 czy ustawiłeś obiekt_A w kwadracie pierwszych 64x64 px ? To jest obszar niesprawdzany przez Twój kod... pz tym dodaj jeszcze warunek else, bo nie wiem, czy nie zostaje ci przypadkiem w tablicy 0 z poprzedniej sesji lub ustawiania... Edit: no i jest GML for(...) { for(...) { //itd. } } bo teraz idzie na ukos sprawdza pozycje (1,1)(2,2)(3,3) itd. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
cysior Opublikowano 28 Stycznia 2011 Autor Udostępnij Opublikowano 28 Stycznia 2011 czy ustawiłeś obiekt_A w kwadracie pierwszych 64x64 px ? To jest obszar niesprawdzany przez Twój kod... Hmm... Dlaczego? Jeżeli mam obiekt_A, na pozycji 64x64 to 32+32*1=64. obiekt_A ma wymiary 32x32. Edit: no i jest GML for(...) { for(...) { //itd. } } bo teraz idzie na ukos sprawdza pozycje (1,1)(2,2)(3,3) itd. Chodzi ci o to? : GML for(n=1;n<=9;n+=1) { for(m=1;m<=9;m+=1) { if place_free(32+32*n,32+32*m) { global.siatka[n,m]=0 } } } Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Mentoss Opublikowano 28 Stycznia 2011 Udostępnij Opublikowano 28 Stycznia 2011 tak... pętla jest teraz dobrze. - - - - GML for(n=1;n<=9;n+=1) { for(m=1;m<=9;m+=1) { if place_free(32+32*n,32+32*m) { global.siatka[n,m]=0 } } } Pętle zaczynasz od cyfry 1. tak więc 1*32=32 do tego dodaj drugie 32 z tąd: 32+32*n i masz 64. Oznacza to, że nie sprawdzasz współrzędnych: (0,0) (0,32) oraz (32,0) (32,32). no i teraz mi wpadło tak do głowy... zamiast place_free() użyj collision_point(). Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
cysior Opublikowano 28 Stycznia 2011 Autor Udostępnij Opublikowano 28 Stycznia 2011 @up Nie sprawdzam bo 1 blok w rzedzie i w kolumnie zaczyna sie od pozycji 64. Tak pozatym zostawmy te pozycje w spokoju. Taki sam wynik jak dla 1 pętli. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Mentoss Opublikowano 28 Stycznia 2011 Udostępnij Opublikowano 28 Stycznia 2011 dodaj jeszcze warunek else, bo nie wiem, czy nie zostaje ci przypadkiem w tablicy 0 z poprzedniej sesji lub ustawiania... GML for(n=1;n<=6;n+=1) { for(m=1;m<=6;m+=1) { if collision_point(32+32*n,32+32*m,obiekt_A,1,1) { global.siatka[n,m]=1; } else { global.siatka[n,m]=0; } } } spróbuj z czymś takim Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
cysior Opublikowano 28 Stycznia 2011 Autor Udostępnij Opublikowano 28 Stycznia 2011 @up Takie coś nawet jakby działało odpada(obecnie nie korzystam z komputera na którym mam gm). Bo w obiekt_A ustala się id w danych tablicach. np. tablica[1,1] = id obiektu ktory znajduje sie na pozycji 64x64 Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Mentoss Opublikowano 28 Stycznia 2011 Udostępnij Opublikowano 28 Stycznia 2011 GML for(n=1;n<=6;n+=1) { for(m=1;m<=6;m+=1) { if collision_point(32+32*n,32+32*m,/* tutaj np. parent albo coś innego. Coś, co ma być zapisane w tablicy*/,1,1) { global.siatka[n,m]=collision_point(32+32*n,32+32*m,/* to, co w warunku */,1,1); } else { global.siatka[n,m]=0; } } } Można? Można! Tylko trzeba pomyśleć. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
cysior Opublikowano 28 Stycznia 2011 Autor Udostępnij Opublikowano 28 Stycznia 2011 @up Nie działa. Proszę o pomoc od innych użytkowników Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Muuuuczek567 Opublikowano 28 Stycznia 2011 Udostępnij Opublikowano 28 Stycznia 2011 Tak naprawdę mogłoby być: GML for(i = 1; i <= 9; i += 1) for(j = 1; i <= 9; j += 1) global.siatka[j,i] = collision_point(32+32*i,32+32*j,all,true,true) jeśli pogodzisz się z tym, że w miejscu, w ktorym nie ma obiektu, tablica nie ma wartości 0, a -4. 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ę