[英]Allegro Circle Collision Detection
我有一個函數,如果兩個圓發生碰撞,該函數應該返回true,否則返回false,為幫助開發,我還在該函數中添加了一個部分以僅在未碰撞時繪制命中框。
我的問題是,即使他們發生碰撞,它也會繼續繪制命中框,並說它們未發生碰撞,這表明該功能無法正常工作。
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));
}
}
我假設camera.getScreenPosX/Y()
將您的cx / cy / cr圈子轉換為另一個空間,而不是player.hitbox.posx / y所在的空間。 但是我不確定,因為沒有給出player.hitbox.draw()
實現。
您的collision
函數看起來不錯,所以我去檢查player.hitpox.posx / y和cx / cy是否在同一坐標空間中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.