2011-08-02 29 views
1

我正在尋找在畫布上下文中管理對象的最佳方法。對於我的第一個項目,我期待着做以下工作:HTML5 Canvas 2D框架專注於碰撞檢測和物理

  1. 繪製地面。
  2. 用碰撞檢測和彈性將一個圓圈放到地面上。
  3. 讓圓圈「爆炸」減去它下面的地面(爆炸,改變地面給出一個看起來像火山口)。

因此,基本上跟蹤物體的最佳方法是什麼,然後由其他物體改變。我猜你可以跟蹤數組中所有對象的變化,但我很好奇,是否有這樣的好框架。謝謝!

回答

2

如果你想建立一個坦克遊戲(即摧毀地面武器),你最好的辦法是不實際跟蹤的是什麼/是不是接地因爲你要與荒謬的最終位置形狀。相反,使用畫布和地面圖像作爲該對象。畫布有一些方法可以在特定點獲取像素顏色,您可以使用它來檢查「是否有地面存在」。然後,您的爆炸只會擦除畫布的一部分,你會運行一個循環做任何浮動地「落」

如果你這樣做,我建議把地面本身在一個單獨的canvas元素,從任何其他元素,這樣你就可以在地面上放置效果/單位等,而不會干擾你的碰撞檢測。

+0

我明白了,那是一個好主意。因此,如果半徑爲10的圓正朝向地面物體,您是否會檢查圓圈內的每個像素是否匹配顏色或圍繞圓的邊緣檢查每個像素?你猜得很完美。試圖模仿舊的坦克遊戲燒焦一個有趣的第一場比賽:) – Fostah

+0

你實際上可以檢查明顯少於這一點。如果你在圓圈90度檢查4點,你會得到非常好的碰撞檢測,如果你再檢查一下,比如說10,你會得到碰撞檢測幾乎與「完全」檢測無法區分的情況。您也可以對其進行優化,以便僅檢查圓圈的「前半部分」。發佈結果,當你完成:) –

+0

太棒了。我期待儘可能高效地做到這一點,這已經給了我一些很棒的想法。謝謝! – Fostah

1

我會看看box2d port for javascript與html5的canvas元素一起使用。過去我已經將它用於閃光燈,它是一個堅實的引擎。它會爲你做所有的碰撞和物理因素,所以你只需要聽取回調並相應地改變圖像。

+0

我已經看到了這一點,但我不確定它是如何處理爆炸類型事件(將形狀添加或減去其他形狀)。感謝您的建議! – Fostah