Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

C++ allegro kolizja

Ostatnio zmodyfikowano 2010-03-04 17:09
Autor Wiadomość
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
C/C++
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?
P-14593
szyx_yankez
» 2010-03-04 06:48:18
C/C++
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ę.
P-14594
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" ?
P-14606
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.
C/C++
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).

P-14607
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
C/C++
if( kolizja z platforma )
{
    ludek.x = ludek.x - 1;
    //odpychaj ludka do tylu
}
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;
P-14609
malan
» 2010-03-04 16:26:55
Pozycja tej platformy jest stała, czy się zmienia w ciągu gry? ;>
P-14610
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...
P-14611
szyx_yankez
» 2010-03-04 16:53:43
C/C++
if( kolizja == true && key[ KEY_RIGHT ] )
     ludek.x++;

if( kolizja == true && key[ KEY_LEFT ] )
     ludek.x--;

Po problemie.
P-14612
« 1 » 2
  Strona 1 z 2 Następna strona