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

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

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

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

綜合交流 / 評測 / 活動區(qū)

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

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

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

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

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

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

上一篇:Android2.2系統(tǒng)中自帶的圖片資源 D-I
下一篇:Android游戲開發(fā)之繪制游戲主菜單與進(jìn)度條加載進(jìn)度(十三)
沙發(fā)
發(fā)表于 2016-3-10 19:48 | 只看該作者 | 來自山東
很給力,ZNDS有你更精彩!
您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

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

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

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

Powered by Discuz!

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

© 2007-2024 ZNDS.Com

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