首頁 收藏 QQ群
 網(wǎng)站導(dǎo)航

ZNDS智能電視網(wǎng) 推薦當(dāng)貝市場

TV應(yīng)用下載 / 資源分享區(qū)

軟件下載 | 游戲 | 討論 | 電視計(jì)算器

綜合交流 / 評(píng)測 / 活動(dòng)區(qū)

交流區(qū) | 測硬件 | 網(wǎng)站活動(dòng) | Z幣中心

新手入門 / 進(jìn)階 / 社區(qū)互助

新手 | 你問我答 | 免費(fèi)刷機(jī)救磚 | ROM固件

查看: 11009|回復(fù): 0
上一主題 下一主題
[教程]

Android 游戲開發(fā)之主角的移動(dòng)與地圖的平滑滾動(dòng)(十五)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
發(fā)表于 2013-8-28 16:19 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
41005帶你走進(jìn)游戲開發(fā)的世界之主角的移動(dòng)與地圖的平滑滾動(dòng)   
     
人物移動(dòng)地圖的平滑滾動(dòng)處理   
   
   
        玩過rpg游戲的朋友應(yīng)該都知道RPG的游戲地圖一般都比較大 今天我和大家分享一下在RPG游戲中如何來處理超出手機(jī)屏幕大小的游戲地圖。   
   
如圖所示為程序效果動(dòng)畫圖   
     
地圖滾動(dòng)的原理   
   
        在本人之前博客的文章中介紹過人物在屏幕中的移動(dòng)方式,因?yàn)橹捌吹挠螒虻貓D是完全填充整個(gè)手機(jī)屏幕的,所以無需處理地圖的平滑滾動(dòng)。這篇文章我著重的向大家介紹一下控制人物移動(dòng)后地圖滾動(dòng)的處理方式。舉個(gè)例子 如上圖所示 比如人物向右移動(dòng),如果地圖貼在屏幕左邊邊界  將先移動(dòng)人物在地圖的坐標(biāo),當(dāng)人物在屏幕中超過三分之二后 則將地圖向人物行走的反方向移動(dòng)給玩家一種人物還在向右移動(dòng)的假象,其實(shí)這時(shí)候人物只是播放向右行走的動(dòng)畫 在屏幕中的坐標(biāo)不變 ,當(dāng)?shù)貓D向人物行走反方向移動(dòng)到不能移動(dòng)的時(shí)候 則表示 地圖右側(cè)邊界已經(jīng)貼住手機(jī)屏幕右側(cè)邊界 這樣地圖則不能在移動(dòng) 這時(shí)候?qū)⒁苿?dòng)人物在屏幕上的坐標(biāo)直到人物貼住屏幕右側(cè)邊界,其它三個(gè)方向原理完全一樣。   
     
代碼的實(shí)現(xiàn)方式   
   
   
   
       還是以人物向右移動(dòng)為例,我們須要三個(gè)坐標(biāo) 一個(gè)是m_HeroPos 來保存人物在地圖中的X坐標(biāo)  一個(gè)是 mScreenPos 來保存人物在屏幕中的顯示坐標(biāo) mMapPos 來保存地圖在手機(jī)屏幕中的顯示坐標(biāo),按鍵盤右鍵后人物在地圖中的坐標(biāo)加上8像素(表示行走的步長),當(dāng)人物的坐標(biāo)超過屏幕的三分之二的時(shí)候需要檢測地圖是否已經(jīng)在邊界, 使用地圖繪制在屏幕中的X坐標(biāo) 加上地圖的寬度 判斷是否等于屏幕的寬度如果等式不成立 則表示地圖可以向左放移動(dòng) 這時(shí)候后人物mScreenPos人物顯示坐標(biāo)將不變 mMapPos地圖顯示坐標(biāo)將向左移動(dòng)人物一個(gè)步長的位置,如果之前的等式成立 則表示地圖無法在向左移動(dòng)  這時(shí)候mScreenPos人物顯示坐標(biāo)將向右移動(dòng)人物一個(gè)步長的位置  直到屏幕右側(cè)邊界 mMapPos地圖顯示坐標(biāo)不會(huì)改變。其三個(gè)方向的移動(dòng)算法完全一樣。   
   
如圖所示地圖在平滑的滾動(dòng)   
   
   
   
     
   
拓展學(xué)習(xí)之卡馬特地圖緩沖算法   
   
   
        這個(gè)游戲demo 還不能稱之為完美 在與物理層碰撞中還是存在一點(diǎn)問題 不過 最重要的是 沒有使用卡馬克地圖緩沖算法,下面我詳細(xì)介紹一個(gè)卡馬克地圖緩沖算法原理。我們需要一張地圖換沖圖, 為了實(shí)現(xiàn)平滑滾動(dòng)的效果緩沖圖的大小應(yīng)該是手機(jī)屏幕寬高 ,這樣內(nèi)存中就會(huì)常駐 一張 手機(jī)屏幕大小的緩沖圖。 如果人物向下方行走則表示地圖向上移動(dòng),這時(shí)候屏幕 將被切割出來了2部分, 上半部分為緩沖圖向上移動(dòng)后的緩沖內(nèi)容,下半部分則就是我們需要更新地圖的部分,將更新后的下半部分與地圖緩沖的上半部分結(jié)合起來繪制在屏幕中則完成了一次地圖更新,這樣可以大大提升游戲繪制地圖的效率。如果不使用這種方式來更新地圖 則地圖每移動(dòng)一次 都須要雙for循環(huán)重新一個(gè)tile一個(gè)tile的繪制一遍效率會(huì)很低下。   
   
   
        如圖所示  地圖向上移動(dòng)后更新綠色的地圖部分 與 將上次緩沖的紅色部分結(jié)合起來就是新的游戲地圖,其它方向原理完全一樣。   
   
       
   
       如圖所示:如果游戲中可以按右下方式來移動(dòng)主角 那么以屏幕右下角為圓心 地圖就會(huì)被切割成4個(gè)部分下圖中紅色區(qū)域須要更新其中 3 個(gè)部分 地圖左邊超出的部分 地圖下面超出的部分 地圖左下方超出的部分,更新的原理和上面一樣。   
   
     
   
       這么看來卡馬克不愧是個(gè)游戲領(lǐng)域的天才,馬克地圖緩沖算法不愧是最最優(yōu)秀的地圖算法之一,大家如有有興趣可以去查一查關(guān)于卡馬特的資料,他確實(shí)是一個(gè)頂尖的游戲開發(fā)工程師。   
   
   
   
   
最近有朋友反映下載資源不夠積分,無法下載很著急,從今天開始雨松MOMO更新的任何下載資源不會(huì)使用下載積分,歡迎大家下載閱讀,還是那句老話每篇文章都會(huì)附帶源代碼的下載地址。   
   
最后如果你還是覺得我寫的不夠詳細(xì) 看的不夠爽 不要緊我把源代碼的下載地址貼出來 歡迎大家一起討論學(xué)習(xí)   
第七講主角移動(dòng)與地圖平滑滾動(dòng).rar(243.29 KB, 下載次數(shù): 695)[/I]2011-9-2 23:57 上傳點(diǎn)擊文件名   下載積分: 下載豆 -2

上一篇:安卓幾十個(gè)不同的例子,含哥哥方面,適合初學(xué)者
下一篇:Android游戲開發(fā)之繪制游戲主菜單與進(jìn)度條加載進(jìn)度(十三)

本版積分規(guī)則

Archiver|新帖|標(biāo)簽|軟件|Sitemap|ZNDS智能電視網(wǎng) ( 蘇ICP備2023012627號(hào) )

網(wǎng)絡(luò)信息服務(wù)信用承諾書 | 增值電信業(yè)務(wù)經(jīng)營許可證:蘇B2-20221768 丨 蘇公網(wǎng)安備 32011402011373號(hào)

GMT+8, 2024-12-22 15:47 , Processed in 0.064600 second(s), 13 queries , Redis On.

Powered by Discuz!

監(jiān)督舉報(bào):report#znds.com (請(qǐng)將#替換為@)

© 2007-2024 ZNDS.Com

快速回復(fù) 返回頂部 返回列表