a亚洲精品_精品国产91乱码一区二区三区_亚洲精品在线免费观看视频_欧美日韩亚洲国产综合_久久久久久久久久久成人_在线区

首頁 > 系統 > Android > 正文

Android游戲開發實踐之人物移動地圖的平滑滾動處理

2020-04-11 11:49:52
字體:
來源:轉載
供稿:網友

如圖所示為程序效果動畫圖

地圖滾動的原理

在本人之前博客的文章中介紹過人物在屏幕中的移動方式,因為之前拼的游戲地圖是完全填充整個手機屏幕的,所以無需處理地圖的平滑滾動。這篇文章我著重的向 大家介紹一下控制人物移動后地圖滾動的處理方式。舉個例子 如上圖所示 比如人物向右移動,如果地圖貼在屏幕左邊邊界 將先移動人物在地圖的坐標,當人物在屏幕中超過三分之二后 則將地圖向人物行走的反方向移動給玩家一種人物還在向右移動的假象,其實這時候人物只是播放向右行走的動畫 在屏幕中的坐標不變 ,當地圖向人物行走反方向移動到不能移動的時候 則表示 地圖右側邊界已經貼住手機屏幕右側邊界 這樣地圖則不能在移動 這時候將移動人物在屏幕上的坐標直到人物貼住屏幕右側邊界,其它三個方向原理完全一樣。

代碼的實現方式

還是以人物向右移動為例,我們須要三個坐標 一個是m_HeroPos 來保存人物在地圖中的X坐標 一個是 mScreenPos 來保存人物在屏幕中的顯示坐標 mMapPos 來保存地圖在手機屏幕中的顯示坐標,按鍵盤右鍵后人物在地圖中的坐標加上8像素(表示行走的步長),當人物的坐標超過屏幕的三分之二的時候需要檢測地圖是 否已經在邊界, 使用地圖繪制在屏幕中的X坐標 加上地圖的寬度 判斷是否等于屏幕的寬度如果等式不成立 則表示地圖可以向左放移動 這時候后人物mScreenPos人物顯示坐標將不變 mMapPos地圖顯示坐標將向左移動人物一個步長的位置,如果之前的等式成立 則表示地圖無法在向左移動 這時候mScreenPos人物顯示坐標將向右移動人物一個步長的位置 直到屏幕右側邊界 mMapPos地圖顯示坐標不會改變。其三個方向的移動算法完全一樣。

如圖所示地圖在平滑的滾動

拓展學習之卡馬特地圖緩沖算法

這個游戲demo 還不能稱之為完美 在與物理層碰撞中還是存在一點問題 不過 最重要的是 沒有使用卡馬克地圖緩沖算法, 下面我詳細介紹一個卡馬克地圖緩沖算法原理。我們需要一張地圖換沖圖, 為了實現平滑滾動的效果緩沖圖的大小應該是手機屏幕寬高 ,這樣內存中就會常駐 一張 手機屏幕大小的緩沖圖。 如果人物向下方行走則表示地圖向上移動,這時候屏幕 將被切割出來了2部分, 上半部分為緩沖圖向上移動后的緩沖內容,下半部分則就是我們需要更新地圖的部分,將更新后的下半部分與地圖緩沖的上半部分結合起來繪制在屏幕中則完成了一 次地圖更新,這樣可以大大提升游戲繪制地圖的效率。如果不使用這種方式來更新地圖 則地圖每移動一次 都須要雙for循環重新一個tile一個tile的繪制一遍效率會很低下。

如圖所示 地圖向上移動后更新綠色的地圖部分 與 將上次緩沖的紅色部分結合起來就是新的游戲地圖,其它方向原理完全一樣。

如圖所示:如果游戲中可以按右下方式來移動主角 那么以屏幕右下角為圓心 地圖就會被切割成4個部分下圖中紅色區域須要更新其中 3 個部分 地圖左邊超出的部分 地圖下面超出的部分 地圖左下方超出的部分,更新的原理和上面一樣。

這么看來卡馬克不愧是個游戲領域的天才,馬克地圖緩沖算法不愧是最最優秀的地圖算法之一,大家如有有興趣可以去查一查關于卡馬特的資料,他確實是一個頂尖的游戲開發工程師。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 一本色道精品久久一区二区三区 | 日本一区二区不卡 | 日韩欧美中文在线 | 久久精品免费视频观看 | 日操视频 | 日本电影www | 成人免费视频网站在线观看 | 99精品久久精品一区二区爱城 | 国产精品国产成人国产三级 | 视频在线一区 | 国产精品二区一区 | 狠狠躁夜夜躁人人爽天天高潮 | 亚洲国产精品第一区二区 | 精品一区二区久久 | 夜夜夜久久久 | av av在线| 国产一区二区视频在线观看 | 久久精品电影 | 日韩午夜av| 久久四色 | 欧美一区二区三区电影 | 亚洲网在线| 日韩中文字幕电影在线观看 | 中文字幕乱码亚洲精品一区 | а天堂中文最新一区二区三区 | www精品美女久久久tv | 欧美精品99| 狠狠色噜噜狠狠色综合久 | 国产精品久久久久9999鸭 | 欧美在线视频一区二区 | 福利网站在线观看 | 99精品免费 | www.日韩| 亚洲第一页在线 | 一区二区不卡视频在线观看 | 精品国产乱码久久久久久1区2区 | 免费成人在线观看 | 国产99久久精品一区二区永久免费 | 欧美大片免费 | 综合视频一区二区三区 | 国产精品欧美日韩在线观看 |