雨松MOMO帶你走進游戲開發的世界之攝像頭的原理以及更新
雨松MOMO原創文章如轉載,請注明:轉載自
雨松MOMO的博客
原文地址:
http://blog.csdn.net/xys289187120/article/details/6624479

游戲中攝像頭的原理介紹
在游戲開發中更新攝像頭的位置可以決定屏幕顯示的內容,尤其是RPG類游戲攝像頭有著非常重要的作用,我舉一個例子 有時候我們在玩RPG游戲的時候進入一個新的場景 觸發一段腳本后 發現鏡頭開始向上移動 根據鏡頭移動玩家可以大概瀏覽一下這個場景有什么東西 ,觸發什么樣的劇情。這個實現的方式就是游戲攝像頭原理。
如圖所示:首先攝像頭顯示的區域也是手機屏幕顯示的區域 如果需要更改攝像頭的位置 其實是更改背景地圖的位置 利用程序拖動背景地圖 給玩家一種假象讓玩家感覺像是攝像頭在移動而不是背景地圖在移動。
游戲中地圖的繪制原理介紹
根據地圖編輯器生成的出來的數組的每一個tile 的 ID 找到每一個tile的地圖資源原始文件的XY坐標 算出來圖片的顯示位置利用程序的切割的方法把每一個tile切割出來顯示在手機屏幕中。
切割圖片的代碼所示:
canvas.save();
切割圖片之前先把Canvas保存起來 然后在切割 繪制結束后
canvas.restore();
在把Canvas的在狀態重置回來 如果不這么做的話 第一張圖片切割后就會擋住以后所有的圖片,所以大家一定要記住這一點喔。
在游戲開發中更新攝像頭的位置可以決定屏幕顯示的內容,尤其是RPG類游戲攝像頭有著非常重要的作用,我舉一個例子 有時候我們在玩RPG游戲的時候進入一個新的場景 觸發一段腳本后 發現鏡頭開始向上移動 根據鏡頭移動玩家可以大概瀏覽一下這個場景有什么東西 ,觸發什么樣的劇情。這個實現的方式就是游戲攝像頭原理。
如圖所示:首先攝像頭顯示的區域也是手機屏幕顯示的區域 如果需要更改攝像頭的位置 其實是更改背景地圖的位置 利用程序拖動背景地圖 給玩家一種假象讓玩家感覺像是攝像頭在移動而不是背景地圖在移動。
游戲中地圖的繪制原理介紹
根據地圖編輯器生成的出來的數組的每一個tile 的 ID 找到每一個tile的地圖資源原始文件的XY坐標 算出來圖片的顯示位置利用程序的切割的方法把每一個tile切割出來顯示在手機屏幕中。
切割圖片的代碼所示:
canvas.save();
切割圖片之前先把Canvas保存起來 然后在切割 繪制結束后
canvas.restore();
在把Canvas的在狀態重置回來 如果不這么做的話 第一張圖片切割后就會擋住以后所有的圖片,所以大家一定要記住這一點喔。

如圖所示:每一張tile的繪制原理就是這樣,說到這里有些朋友可能就要問 如果我的地圖無限大那根據這個方法豈不是要循環無限次?其實屏幕須要繪制的tile數量只需要繪制屏幕顯示區域以內的, 屏幕現實區域以外的我們不用考慮繪制 只需要更新地圖的坐標數據就可以,比如我的模擬器屏幕的大小是320X480 那么我實際繪制的tile數量只是 10 X15 (塊)。其實游戲開發繪制中還有一個更重要的繪制技術就是雙緩沖技術它可以用來解決屏幕閃爍問題,下一章中我會詳細介紹。
昨天有朋友跟我提出這種用數組的方式來繪制地圖不科學我很同意他的觀點 ,為什么不科學? 原因是現在我們只有一個場景我們用一個數組來繪制地圖 萬一我們的游戲有100個場景 我們豈不是要在程序中寫100個數組了?其實在實際開發中我們是把這些地圖的信息轉成xml文件 打到游戲的包中 玩家在切換游戲場景的時候便會讀取當前游戲場景中的地圖xml文件。其實這些xml文件中也是保存這地圖的二位數組信息 但是這樣做的好處就是數據驅動 程序員不用定義N個數組 做N種判斷 只須要根據當前切換的場景的ID就可以得到地圖的信息 十分方便 也可以避免代碼中由于筆誤造成的的錯誤 何樂而不為。
但是不管用任何方法處理數據 它的繪制原理都是一樣的。
如何更新游戲中攝像頭
效果圖:程序取隨機數更新游戲攝像頭
目前以每10000毫秒更新一下攝像頭的位置 (隨機數) 我們有了攝像頭的位置以后 就可以在算出背景圖片的相對顯示位置 移動背景圖片的位置后就可以給玩家制造出一種攝像頭在移動的假象了。
地圖塊是我新拼的 長寬的tile塊數是20X20。
最后如果你還是覺得我寫的不夠詳細 看的不夠爽 不要緊我把源代碼的下載地址貼出來 歡迎大家一起討論學習
雨松MOMO希望可以和大家一起進步。
下載地址: http://download.csdn.net/source/3460437
昨天有朋友跟我提出這種用數組的方式來繪制地圖不科學我很同意他的觀點 ,為什么不科學? 原因是現在我們只有一個場景我們用一個數組來繪制地圖 萬一我們的游戲有100個場景 我們豈不是要在程序中寫100個數組了?其實在實際開發中我們是把這些地圖的信息轉成xml文件 打到游戲的包中 玩家在切換游戲場景的時候便會讀取當前游戲場景中的地圖xml文件。其實這些xml文件中也是保存這地圖的二位數組信息 但是這樣做的好處就是數據驅動 程序員不用定義N個數組 做N種判斷 只須要根據當前切換的場景的ID就可以得到地圖的信息 十分方便 也可以避免代碼中由于筆誤造成的的錯誤 何樂而不為。
但是不管用任何方法處理數據 它的繪制原理都是一樣的。
如何更新游戲中攝像頭
效果圖:程序取隨機數更新游戲攝像頭



目前以每10000毫秒更新一下攝像頭的位置 (隨機數) 我們有了攝像頭的位置以后 就可以在算出背景圖片的相對顯示位置 移動背景圖片的位置后就可以給玩家制造出一種攝像頭在移動的假象了。
地圖塊是我新拼的 長寬的tile塊數是20X20。

最后如果你還是覺得我寫的不夠詳細 看的不夠爽 不要緊我把源代碼的下載地址貼出來 歡迎大家一起討論學習
雨松MOMO希望可以和大家一起進步。
下載地址: http://download.csdn.net/source/3460437
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
