我需要定義一個多邊形,它將是「合法」區域,並允許用戶在該多邊形內移動一個矩形,從而防止他們將矩形移動到多邊形之外的任何位置。碰撞檢測的最佳方式是什麼?
多邊形是一個固定的形狀,所以,我想這可能是最容易導入一個PNG的形狀,並以這種方式拉點,不知何故?但是,在用戶拖動矩形時檢查矩形的座標,以及測試他們將形狀移動到邊界多邊形的邊緣時,我仍然處於虧損狀態。
不幸的是,邊界多邊形是一個相當複雜的形狀。我希望有人能指點我一個教程,該教程展示了運行這種碰撞檢測的最佳方式。
我需要定義一個多邊形,它將是「合法」區域,並允許用戶在該多邊形內移動一個矩形,從而防止他們將矩形移動到多邊形之外的任何位置。碰撞檢測的最佳方式是什麼?
多邊形是一個固定的形狀,所以,我想這可能是最容易導入一個PNG的形狀,並以這種方式拉點,不知何故?但是,在用戶拖動矩形時檢查矩形的座標,以及測試他們將形狀移動到邊界多邊形的邊緣時,我仍然處於虧損狀態。
不幸的是,邊界多邊形是一個相當複雜的形狀。我希望有人能指點我一個教程,該教程展示了運行這種碰撞檢測的最佳方式。
Metanet的excellent collision detection tutorial有關於如何使用軸對齊邊界框(AABB)和任意「牆」執行掃描碰撞的很好的部分。
如果您的多邊形是凹形的,您可能會發現最容易首先將其分解爲多個凸多邊形,這將簡化可用的碰撞檢測算法。
如果你只是想檢查矩形的角落,你可以做每個人的「內部」測試。 http://en.wikipedia.org/wiki/Point_in_polygon
如果你也想確保多邊形沒有尖尖的部分「刺破」您的矩形,你可以在多邊形,看是否做了測試每個4行對所有行中的矩形他們正在相交。 http://en.wikipedia.org/wiki/Line-line_intersection
這是一個了不起的教程,謝謝。我想我可以從那裏解決問題。 – 2012-02-24 22:13:46