我有一個關於libGDX碰撞檢測的問題。因爲這是一個相當具體的問題,我還沒有在互聯網上找到任何好的解決方案。libGDX-完全碰撞檢測 - 創建多邊形?
因此,我已經創建了由不同身體部位組成的「人類」,每個人體都具有矩形形狀的碰撞檢測。
現在我想要實現的武器和技能,這對於例如是這樣的:
問題
在碰撞檢測的矩形工作將是玩家真正令人沮喪時,有是這樣的技能:他們會成功躲避技能,但碰撞檢測器仍然會損壞它們。
方法1:
之前,我開始與Libgdx工作,我已經創建了一個帶有自定義引擎和類似的技能的Android遊戲。在那裏,我的問題解決了以下方法:
- 檢測矩形碰撞
- 計算重疊矩形截面
- 檢查技能的重疊部分的透明度
- 的每一個像素。如果有任何非透明像素髮現 - >碰撞
這是一種沉重的方式,但由於只有重疊的像素被檢查和遊戲的其餘部分真的很輕,它工作得很好。
此刻我的技能圖像被加載爲「TextureRegion」,無法訪問單個像素。 我發現libGDX有一個Pixmap類,它允許進行像素檢查。問題是:讓它們像Pixmaps一樣被加載時會更加沉重,並且會打敗Texture系統的整個目的。
另一種方法是隻將所有技能加載爲Pixmap。你怎麼看:這會是一個好方法嗎?是否有可能在屏幕上繪製很多Pixmaps而沒有任何問題和滯後?
方法2:
的另一個方法是先用的技能形狀創建多邊形並將其用於碰撞檢測。
a) 但是,我將如何定義每個單一技能的多邊形形狀(有超過150個)?在瀏覽了一段時間後,我發現這個有用的工具:http://www.aurelienribon.com/blog/projects/physics-body-editor/ 它允許手動創建多邊形的形狀,然後將它們保存爲JSON文件,libGDX應用程序可讀。現在遇到困難:
- 物理主體編輯器連接到Box2d(我沒有使用)。我要麼必須添加整個Box2d物理引擎(我根本不需要),只是因爲一個微小的碰撞檢測,或者我不得不編寫一個自定義的BodyEditorLoader,這將是一個艱難,複雜和耗時的任務
- 同一技能精靈的某些圖像在形狀上有很大差異(如第二個技能精靈示例)。在使用BodyEditor工具時,我不得不定義每種技能的形狀,但是我必須定義每種技能的幾張圖像(最多12張)的形狀。實施這些幾十個多邊形的時候這將是非常耗時和巨大的混亂形狀
B) 如果有任何光滑的方式自動生成多邊形外之象,這可能是解決方案。我可以簡單地將每個精靈部分連接到生成的多邊形,然後通過這種方式檢查碰撞。有幾個問題,但:
- 是否有任何光滑的工具,可以生成圖像的多邊形形狀(並不需要太多的時間)?
- 我不認爲像這樣的工具(如果存在的話)可以直接使用紋理。它可能需要Pixmaps。不過,在Polygon創建之後,不需要保持te Pixmaps的加載。仍然是一項非常繁重的任務
我現在的想法
我被困在這一點上,因爲有幾種可能的方法,但他們都有自己的困難。在我選擇一條路徑並繼續編碼之前,如果您能留下一些您的想法和知識,那將是非常棒的。
libGDX中可能包含有幫助的類和代碼,可以在幾秒鐘內解決我的問題 - 因爲我真的是libGDX的新手,我對此還不甚瞭解。
目前我想我會採用方法1:使用像素檢測。這樣我就可以在我以前的Android遊戲中實現準確的碰撞檢測。
您認爲如何?
問候 菲利克斯
您是否找到一個好的解決方案?我有同樣的問題。我不知道如何從物理編輯器工具的座標中創建多邊形,並在沒有box2d的情況下檢查碰撞。 – trinity420