C++ allegro kolizja
Ostatnio zmodyfikowano 2010-03-04 17:09
Bartaz Temat założony przez niniejszego użytkownika |
C++ allegro kolizja » 2010-03-03 22:05:59 Nie,to nie jest kolejne pytanie jak zrobić kolizje... Ale związane z nią. Mam np kolizje ludka z platformą i jest if( kolizja z platform ą ) { ludek.x--; } i np idze sobie ludek i uderza w nią z boku to go odpycha do tyłu. A co jeśli by naskoczylem na nia z góry? Tez by go odepchło w bok a to troche dziwniee bo powinien na niej ustac. I tu pytanie jak napsiac zeby np jezeli bedzie z gory to soe zatrzyma na niej a nie ze poleci w inna strone a z boku to sie zatrzyma o nia? |
|
szyx_yankez |
» 2010-03-04 06:48:18 if( kolizja z platform ą z g ó ry == true ) { ludek.y--; } if( kolizja z platform ą z g ó ry == false ) { ludek.y++; }
Ważne jest aby wartości zwiększane(podczas gdy nie ma kolizij) i zmniejszane(gdy jest) były takie same, bo gdy nie będą ludek może wpaść w negatywne wibrację. |
|
Bartaz Temat założony przez niniejszego użytkownika |
... » 2010-03-04 16:00:53 Takie cos to wiem jak zrobic ale co wpisac w miejsce"kolizja platformy z gory" ? |
|
szyx_yankez |
» 2010-03-04 16:12:25 Zaproponował bym Ci tu zrobienie kolizij per-pixel, ale w takim wypadku musiał byś sobie stworzyć drugą bitmapę z terenem(tam gdzie na bitmapie kolorowej masz platformę to na drugjej w tym samym miejscu wypełnij to kolorem np 255,255,255. int kol() { if( getpixel( bitmapa ta z czarn ą powierzchni ą, x, y ) == makecol( 255, 255, 255 ) ) return true; else return false; }
if( kol() == true ) y--;
Musisz uwzględnić też że w mjejsce x,y, musisz wpisać pozycję np "stopy ludka". Jaśnjej: jak wymiary bitmapy twojego ludka x=100,y=100, to x=x+(100*0.5) y=y+(100*1). |
|
Bartaz Temat założony przez niniejszego użytkownika |
... » 2010-03-04 16:20:48 A co mi da ta kolizja,chodzi mi oto ze np idze sobie ludek przed nim bitmapa platforma, i jest if( kolizja z platforma ) { ludek.x = ludek.x - 1; } A teraz znowu idze sobie ludek na ta bitmape ale z drugiej strony i jak bedzie kolziaj to go nie odepchie od bitmapy tylko go w nia wciagnie bo ludek.x=ludek.x-1; o i jak zrbic ze jezeli uderzy w ten bok to bedzie ludek.x=ludek.x+1 a nie -1; |
|
malan |
» 2010-03-04 16:26:55 Pozycja tej platformy jest stała, czy się zmienia w ciągu gry? ;> |
|
Bartaz Temat założony przez niniejszego użytkownika |
... » 2010-03-04 16:46:35 Stała to moze byc np platforma w grze mario... |
|
szyx_yankez |
» 2010-03-04 16:53:43 if( kolizja == true && key[ KEY_RIGHT ] ) ludek.x++;
if( kolizja == true && key[ KEY_LEFT ] ) ludek.x--;
Po problemie. |
|
« 1 » 2 |