Krzywa kolizja Allergro
Ostatnio zmodyfikowano 2011-07-27 12:37
bingo009 Temat założony przez niniejszego użytkownika |
Krzywa kolizja Allergro » 2011-07-26 21:12:39 witam was serdecznie, od pewnego czasu męczę się z kolizją. Zmajstrowałem sobie funkcję, i ona niby działa, tylko raz wskakuje szybciej po zetknięciu, a innym razem muszę całym playerem wjechać na kafelek. Czyli tak, na jednym rogu wystarczy że tylko delikatnie zetknę się ze ścianą i już kolizja działą, a innym razem znowu muszę całym playerem na ściane wjechać. Co jest nie tak? if( map[( player_y + player_x ) / 40 ][ player_y / 40 ] == 1 ) { textout_ex( screen, font, "Kolizja", 20, 20, makecol( 255, 0, 255 ), - 1 ); }
Używam wyświetlania mapy by easykoder, lecz działa mi dziwnie, jak w tablicy jest 1 to wtedy program pokazuje kafelek 2, jak jest 5 to wtedy pokazuje 6 itd itp. Czy to jest przyczyną problemu? Lecz myślę że tak powinno być. |
|
malan |
» 2011-07-26 21:39:18 Widocznie sprawdzasz kolizje tylko z jednym z wierzchołków Twojego obiektu. Nawiązując do mapy - kafelki numerujemy od zera. |
|
bingo009 Temat założony przez niniejszego użytkownika |
» 2011-07-27 10:24:29 No też prawda, czyli wporządku. U mnie gracz może dotknąć tylko kafelka numer 1, więc proszę o pomoc z tą funkcją. |
|
SeaMonster131 |
» 2011-07-27 10:37:31 No masz 4 wierzchołki i spr czy z którymś występuje kolizja. player.x; player.y to pierwszy wierzchołek (lewy górny) player.x + player.w; player.y to drugi wierzchołek (prawy górny) player.x; player.y + player.h to trzeci wierzchołek (lewy dolny) player.x + player.w; player.y + player.h to czwarty wierzchołek (prawy dolny) I teraz spr dla każdego kolizję :) |
|
bingo009 Temat założony przez niniejszego użytkownika |
» 2011-07-27 11:47:13 Ok dobrze, dzięki za podpowiedź. |
|
bingo009 Temat założony przez niniejszego użytkownika |
» 2011-07-27 12:37:05 Też coś marnie działa, pokomibunje jeszcze z nią dzięki, |
|
« 1 » |