2014-03-30 102 views
0

有沒有人有處理LibGDX矩形和圓形的三角形交叉的最佳方式的任何建議?我看到Intersector類有測試與三角形和光線相交的方法,但我不知道如何將它直接應用到矩形或圓形。我也看到有一個isPointInTriangle方法,我可以用它來循環三角形和矩形的點?LibGDX中矩形/圓的三角形碰撞

http://libgdx.badlogicgames.com/nightlies/docs/api/com/badlogic/gdx/math/Intersector.html

也許我只是缺少內LibGDX一個簡單的,已經存在的功能?任何幫助將非常感激。

回答

1

三角形和矩形都被認爲是多邊形,所以使用libGDX Polygon類來描述你的三角形和矩形,然後使用Intersector類來相交它們。

爲圓您可以:

  1. 與多邊形逼近它(比如在左右輪10分),然後使用部門間的類。

  2. 創建您自己的定製圓到多邊形碰撞檢查器。

一種簡單的方法來檢查想到多邊形和圓形的碰撞:

if center of circle is inside the polygon =>>> they overlap. 

else if distance between circle center and any of the polygons vertices is less then circle radius =>>> they overlap. 

else =>>> they dont overlap. 

這是考慮到你不需要知道究竟是這些數字的重疊部分,只有你想知道它們是否重疊。如果您需要了解重疊部分,那麼使用多邊形逼近您的圓是唯一的方法。

+0

謝謝!我實際上也能夠找到這個,並且像你剛纔提到的那樣創建我自己的交叉類:http://stackoverflow.com/questions/15323719/circle-and-polygon-collision-with-libgdx – user3342237

+0

就這麼你知道,您鏈接的方法效率低於我所說的方法,並且如果由於每次調用新的Vector2而重複調用,它也會產生大量垃圾。但是如果遊戲中沒有太多的圈子,那麼你可能會很好。 –

+0

謝謝,我會嘗試重做它,但它現在適合。我只有一個圓圈,最多10個多邊形,所以我現在不期望性能問題。 – user3342237