2011-04-29 83 views
3

我已經通過教程(http://glacialflame.com/category/tutorial/)合作,建立一個等距遊戲引擎,但我想在地圖與字符作爲焦點移動。帆布等距遊戲引擎 - 移動地圖

所以,當你移動 - 在角色在地圖中心。

我有一個小引擎收錄在這裏: http://pastebin.com/U75Pz4Yy

看到它在這裏的行動: http://www.wikiword.co.uk/release-candidate/canvas/newEngine/index.html

有一個小提琴,按要求! http://jsfiddle.net/neuroflux/vUxYg/2/

注:如果您使用的是IE6 這是唯一的HTML5和Canvas瀏覽器,不要抱怨;)

任何想法和幫助,將不勝感激,我想我可以做到這一點分別用+1或-1更新數組中的每個「切片」,但我似乎無法爲畫布上已有的切片圖像執行ForEach循環。

提前歡呼!

+0

您應該製作一個jsFiddle,以便我們可以協作嘗試:) – alex 2011-04-29 12:06:29

+0

更新後的問題:) – 2011-04-29 12:09:52

回答

1

移動地圖應該像玩家位置翻譯上下文一樣簡單。

用X或Y的球員動作,所以應畫布相同的量(或由負即量)翻譯

我沒有打擾找到合適的偏移,使兔子始終的中心屏幕,但它應該讓你知道它是如何完成的。

+0

Simon Sarris - +1給你!絕對的明星!謝謝! – 2011-04-29 12:42:49

+0

很高興幫助。我對Canvas遊戲非常感興趣,如果你有公開發展的話,我會很樂意關注你的遊戲。 – 2011-04-29 14:18:19

+0

你的jsfiddle鏈接已死亡。如果你還有它們,請添加你的例子的相關部分。 – Ken 2012-01-29 14:44:08

0

我可以給一個想法,而不是隻有一個畫布,你可以管理3個帆布和設置他們3周的div絕對定位,讓每個DIV是建立在透明的背景前面的頂部。

  • 一個背景
  • 一個玩家
  • 一個在地圖上的對象(即可以重疊的球員)

畫布會比看到操場較大(可能是用溢出CSS設置管理)。玩家總是在遊樂場的中心。移動時,不必重繪背景和頂層,只需處理div位置,瀏覽器就可以完成圖形工作。

之後還有裝載新的背景磚的問題,可能有一些隱藏的帆布預緊處理。這種分層畫布的方式可以應用於其他圖層(活動標記圖層,其他玩家圖層等),它是一個'精靈層',其中瀏覽器圖形引擎完成大部分最終屏幕圖像渲染。

2

有幾種方法來攻擊這一點:

  1. 您可以移動整個畫布,刪除這成爲無形(最終)的元素。那麼如果左上角是-257467,374672呢?這只是渲染器的一個補充。

  2. 而不是移動的畫布,你可以移動時代的圖像。因此,爲地圖塊的所有樣式元素創建一個數組,然後在循環中移動background-image樣式。地圖元素保持原樣,只有圖像發生變化。

  3. 您可以創建/刪除DOM節點加上移動現有的。但是根據我的經驗,這很貴(因爲瀏覽器需要弄清楚你改變了什麼,然後更新DOM樹,刷新渲染緩存,渲染你再次更改的部分,創建和銷燬大量對象......)