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

[C++] Prośba o sprawdzenie kodu funkcji

Ostatnio zmodyfikowano 2010-05-06 18:47
Autor Wiadomość
Neomex0
Temat założony przez niniejszego użytkownika
[C++] Prośba o sprawdzenie kodu funkcji
» 2010-05-06 17:22:20
Czy poniższa funkcja sprawdzająca kolizje jest dobrze napisana?
Nie wykrywa kolizji, a nie wiem co źle zrobiłem...
C/C++
bool isCollision( int x1, int y1, int w1, int h1, /*break*/ int x2, int y2, int w2, int h2 )
{
    if(( x1 >= x2 && x1 <= w2 && y1 >= y2 && y1 <= h2 ) ||
    ( w1 >= x2 && w1 <= w2 && y1 >= y2 && y1 <= h2 ) ||
    ( x1 >= x2 && x1 <= w2 && h1 >= y2 && h1 <= h2 ) ||
    ( y1 >= x2 && y1 <= w2 && h1 >= y2 && h1 <= h2 )
    )
    {
        return true;
    } else
    {
        return false;
    }
}
P-16656
lenrokskate
» 2010-05-06 17:30:18
tak, jest źle napisana

po 1: zmienne w i h oznaczają, jak mniemam, wysokość i szerokość? w takim razie musisz dodawać do nich położenie lewego górnego rogu sprita

zacznij od tego a potem popatrzymy

i w ogóle pokaż jak ją odpalasz - może coś źle wpisujesz
P-16657
Neomex0
Temat założony przez niniejszego użytkownika
» 2010-05-06 17:32:36
w - szerokosc
h - wysokosc
C/C++
if( isCollision( player.x, player.y, player.w, player.h,
enemy[ 0 ].x, enemy[ 0 ].y, enemy[ 0 ].w, enemy[ 0 ].h )
== true )
{
    player.wasHit = true;
} else
{
    player.wasHit = false;
}
Czyli pozmieniać w ten sposób?
( x1 >= x2 && x1 <= w2+x2 && y1 >= y2 && y1 <= h2+y2 )
P-16658
lenrokskate
» 2010-05-06 17:45:29
zobacz: masz prostokąt1( x1,y1,a1,b1) oraz prostokąt2( x2,y2,a2,b2)

brak opisu
brak opisu

kod na kolizję:

C/C++
bool kolizja( int x1, int y1, int a1, int b1, int x2, int y2, int a2, int b2 )
{
    if( x2 <= x1 + a1 && x2 > x1 && y2 >= y1 && y2 <= y1 + b1 ) return true; else
    if( x2 <= x1 + a1 && x2 > x1 && y2 + b2 >= y1 && y2 + b2 <= y1 + b1 ) return true; else
    if( x2 + a2 <= x1 + a1 && x2 + a2 > x1 && y2 >= y1 && y2 <= y1 + b1 ) return true; else
    if( x2 + a2 <= x1 + a1 && x2 + a2 > x1 && y2 + b2 >= y1 && y2 + b2 <= y1 + b1 ) return true;
    else return false;
   
};
P-16659
Neomex0
Temat założony przez niniejszego użytkownika
» 2010-05-06 18:47:03
Działa idealnie, dzięki!
:)
P-16661
« 1 »
  Strona 1 z 1