2014-01-12 47 views
0

所以我試圖做一個小遊戲,無論是實踐和樂趣(我第一次嘗試)從未有過任何與它之前..帆布VS DOM元素遊戲和碰撞

你可以看到我到目前爲止已經嘗試過:http://myfirstgame.e-ddl.com/一直在爲它工作6-8個小時左右。到目前爲止,我意識到在繼續之前我會更好地問。

我現在擁有它的方式,我有一個主循環,每20毫秒左右運行一次。 Ihis循環調用兩個功能:

  1. 處理擊鍵(它遍歷障礙陣列和檢查,如果玩家的未來位置發生碰撞任何障礙物體,改變球員的屬性,未來的位置值)。

  2. 它通過「需要更新」數組並更改元素的CSS細節以反映所做的更改。

我有幾個問題:

  • 就是上面一個好主意來處理衝突?如果不是更好的方式(我的意思是在地圖上的800-1500個障礙物上游戲速度變慢)。

  • 要計算距離,我使用2點方程之間的距離。如果我只有1點,角度和距離。我怎樣才能找到第二點(x,y)?

  • 什麼會更好,畫布或DOM? (不是重要的問題,因爲我已經完成了DOM)。

+0

對於包含單詞「什麼更好」的問題,唯一有效的答案是「取決於」。 – Philipp

+0

是的,這是對我來說不重要的整個問題的一部分,因爲我已經在DOM中完成了它,更重要的是合謀。並計算第二點 –

+0

感謝您糾正我。固定。 –

回答

0

謝謝大家。

我找到了解決方案,我正在尋找。

關於碰撞的方式,我這樣做是完全錯誤的,我會列出更正確的方式。

關於距離 - 我想出的解決方案是檢查從玩家的當前位置到物體的距離,如果玩家的步距大於距離,則從距離中扣除步長並走到該距離。

至於帆布VS DOM - 似乎都有他們的crons和優點。

現在對於碰撞 正確的做法是創建一個像素映射數組。所以如果你的畫布或容器節點的寬度爲800:高度爲500,你將有一個代表這些像素的2D陣列

然後當我檢查位置時我只檢查玩家的當前位置+一個東西。

所以像:

if(array[300][500]){ 
    return false; 
} 

這就是我發現了。

如果有人有更好的解決方案,那就讓我知道。