2013-03-04 19 views
0

我很難搞清楚具有可拖動對象的多個邊界的對象。 HitTest不起作用,因爲當快速拖動時,HitTest觸發前對象會重疊。我想知道是否有一種更有效的方法來確定這種互動。使用複雜對象進行可拖動對象碰撞檢測的最佳方法

我將嘗試存儲每個矩形x,y,寬度,高度,然後遍歷這些矩形,以確定對象是否已觸及並停止播放器在該方向上可拖動。

Here's the example as a drawing.

+0

如果你只需要在一個標準的'DisplayList'上碰撞,那麼絕對沒有必要使用Box2D,順便說一下,它也是一個物理引擎,它也內置了碰撞檢測。如果你只想測試碰撞這些對象的邊界可以使用'draggable.bounds.intersects(blueStuff.bounds)'。 – Gio 2013-03-05 06:56:52

+0

感謝Gio,但是我怎樣才能看到它與哪個網站相交呢? – Tom 2013-03-05 16:53:14

+0

我會有一個'Vector'或'Array'這些可交叉的站點,並在'Event.ENTER_FRAME'處理程序的'for'循環中檢查它們,它將在開始拖動後開始監聽,並在完成拖動後停止。 – Gio 2013-03-06 06:10:21

回答

0

因爲你想檢測碰撞在高速行駛時發生的事情,你需要使用某種形式的席捲多邊形的碰撞檢測。在前一幀和最後一幀之間只有一次採樣衝突總是有失敗的可能。

退房風靡碰撞檢測的這個簡短解釋: http://howlingmoonsoftware.com/wordpress/?p=300

或者只是做「風靡碰撞檢測」的搜索

如果你在一場比賽中這樣做,你可能還會發現使用像Box2D這樣的圖書館將是一個值得解決的問題。在Box2D的說法中,你想要的是持續的碰撞檢測。 http://www.box2d.org/manual.html

+0

我試過box2d,它可以很好地工作......但我無法使用多點觸控來操作它。所以我只是想嘗試從頭開始構建碰撞。在這一點上,現在已經證明我有點頭大。 – Tom 2013-03-04 22:22:59

+0

你應該能夠讓Box2D在多點觸摸的情況下工作而不會有太多的悲傷。只需創建一個觸摸(如鼠標向下),您可以創建一個鼠標連接,在觸摸移動或輸入框架上,當觸摸消失時(例如鼠標移動),您將更新鼠標連接位置以跟隨觸摸,您應該刪除它的鼠標點。 – 2013-03-04 23:21:19