我一直在尋找類似的問題張貼在SO(和其他地方),但他們似乎只處理矩形,我可以在這一點上處理好,或者比我目前可以包裹我的頭更復雜。JavaScript碰撞檢測矩形和一組邊界座標?
我正在通過mousedown事件在屏幕上移動一個精靈,並希望鎖定它移動「越界」。該範圍可能是一些簡單的像這樣的房間:
其中綠色的是可移動的空間,紅色的限制。我最好把它分解成1長的矩形和2個三角形(或者用一組正方形來表示具有鋸齒狀邊緣的三角形),還是有一個基本概念,我應該注意指定「可行走區域」的座標,並驗證用戶總是「在界限內」?
我在JavaScript中編寫了這個代碼,並且非常依賴jQuery。
編輯︰考慮我可能需要有無限的點(如果房間超過4分)我會更好使用類似A *的東西來生成路徑?
謝謝你,這是非常有幫助的。我唯一擔心的是,當邊界超過4分時,這種邏輯會破壞嗎?即:http://oi52.tinypic.com/2u8i0bb.jpg –
不一定......在第二種情況下,你給了你很好的應用這個基本技巧。但是,您將需要一個boundary.getTopAt(x)來代替不同的高度,而不是boundary.top。通常,您可以使用getSomeBoundAt(x_or_y_here)擴展此技術,以適用於任何凸多邊形。各種getBound()方法需要擴展以考慮不同的線段,對於第二個圖像,有7個這樣的線段要考慮boundary.getTopBoundAt()。 – Yourpalal
經過進一步的思考,即使對於第一個示例,也需要使用getTopBoundAt(),因爲頂部y也沿着兩個邊緣變化。我會編輯我的解決方案來反映這一點。 – Yourpalal