2017-02-13 77 views
0

我想通過從紋理中切割透明區域來創建多邊形。 我寫了一個程序來檢測2個對象之間的碰撞。 但碰撞在碰撞之前被檢測到。 這是它的外觀:http://imgur.com/a/dFmXI如何在紋理上創建多邊形libGDX

這是代碼:https://hastebin.com/bebusadiku.java 我以爲切紋理和創建基於板缺質感多邊形,然後使用部門間方法檢測到衝突,但我不知道如何指定多邊形的頂點。

我試圖按照這一點,但沒有解釋如何檢測頂點: https://gamedev.stackexchange.com/questions/114228/how-to-detect-collision-only-in-non-transparent-texture

感謝您的幫助

回答

0

我以前this polygonal shape editor來檢查碰撞創建更復雜的形狀。我相信在Box2D中,它不適用於「盒子」,但Box2D佔用大量空間,如果不使用實際的物理學,這是不必要的。但是,此工具會生成JSON格式化的多邊形座標,並不難將其反序列化爲Polygon對象,並與Intersector implementation發生衝突。所以在步驟中你:

  • 使用shape editor tool創建圖像的形狀。
  • 使用該工具將其導出到JSON。
  • 將數據反序列化爲LibGDX Polygon
  • 移動,縮放並將其正確添加到圖像中,使其同步。
  • 首先檢查基本矩形與矩形的碰撞。
  • 如果存在基本碰撞,請使用Intersector進行更詳細的碰撞檢測。

該工具導出大量冗餘數據,如果您熟悉導出的格式,可以除掉多邊形/頂點數據以外的所有數據。

+0

我認爲要做到這一點,但我想創建一個通用類,它在構造函數中剪切圖像,所以我需要一個算法或一個用於物理身體編輯器的腳本。但腳本的問題是當我在Android上移植我的遊戲時,它不起作用。我有一個想法是逐像素地裁剪圖像,但是我的實現可能效率很低並且滯後於我的遊戲。但我不知道Texture類是否具有識別像素顏色並允許在像素上操作的方法。如果它有效,我可以嘗試在紋理上找到極端點並根據這些點創建一個多邊形。 –

+0

是的,爲紋理創建一個像素圖。沿邊緣做一些Bressingham視線技術來找到你的頂點。然後從它創建一個delaunai三角形,最終只有凹多邊形。 – Madmenyo

+0

對不起,我的英語,但是什麼意思Bressingham線和delaunai?順便說一句,有沒有任何算法可以幫助我或我必須實現從零的一切? –