2016-03-26 9 views
0

2つの円が衝突している場合はtrueを返し、それ以外の場合はfalseを返し、開発中に役立つ関数を持っています。関数内にヒットボックスを追加して、衝突する。Allegro Circle Collision Detection

私が問題になっているのは、衝突してもヒットボックスを引き続き描画し、衝突していないと判断し、機能が正しく動作していないことを示します。

int colliding(int x, int y, int r, int x1, int y1, int r1) 
{ 
    //compare the distance to combined radii 
    int dx = x1 - x; 
    int dy = y1 - y; 
    int radii = r + r1; 
    if ((dx * dx) + (dy * dy) < radii * radii) 
    { 
     return true; 
    } 
    else 
    { 
     player.hitbox.draw(); 
     return false; 
    } 
} 

int main() 
{ 
    while (true) 
    { 
     player.draw(); 

     int cx = 300; 
     int cy = 300; 
     int cr = 50; 

     al_draw_filled_circle(camera.getScreenPosX(cx), camera.getScreenPosY(cy), cr, al_map_rgb(0, 0, 0)); 
     colliding(player.hitbox.posX, player.hitbox.posY, player.hitbox.radius, cx, cy, cr); 


     al_flip_display(); 
     al_clear_to_color(al_map_rgb(255, 255, 255)); 
    } 
} 

答えて

0

私はcamera.getScreenPosX/Y()がplayer.hitbox.posx/yは1より別のスペースにあなたのCX/CY/CR円を変換することを前提とします。しかし、player.hitbox.draw()の実装が与えられていないので、私は確信できません。

collision関数がうまくいるようですので、player.hitpox.posx/yとcx/cyが同じ座標空間にあるかどうかを確認します。

+0

あなたは正しかった、私は何がわからないが、ヒットボックスの位置に何か問題があった。私はそれの周りに方法を見つけることができます。 –