2016-03-26 27 views
0

İki daire birbiriyle çarpışıyor ve false olursa true olarak geri dönmesi gereken bir işlev var ve geliştirirken yardımcı olmak için, işlev görmediklerinde hit kutusunu çizmek için işlev içinde bir parça ekledim çarpışan.Allegro Circle Çarpışma Algılama

Sorunum, çarpıştığında bile, hitbox'ı çizmeye devam edecek ve işlevlerin düzgün çalışmadığını belirterek çarpışmayacaklarını söylüyor.

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)); 
    } 
} 

cevap

0

Ben camera.getScreenPosX/Y() player.hitbox.posx/y olan olandan başka uzaya cx/cy/cr daireyi dönüştüren varsayılabilir. Ancak emin değilim çünkü player.hitbox.draw()'un uygulanması yapılmıyor.

collision işleviniz iyi görünüyor, bu yüzden player.hitpox.posx/y ve cx/cy öğelerinin aynı koordinat alanında olup olmadığını kontrol ediyorum.

+0

Doğru muydun, ne yapacağıma emin olmamasına rağmen, isabetli kutuların pozisyonunda bir sorun vardı. Etrafında bir yol bulabilirim. –

İlgili konular