亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Android游戲開(kāi)發(fā)實(shí)踐之人物移動(dòng)地圖的平滑滾動(dòng)處理

 更新時(shí)間:2014年06月03日 08:58:06   作者:  
玩過(guò)rpg游戲的朋友應(yīng)該都知道RPG的游戲地圖一般都比較大 今天我和大家分享一下在RPG游戲中如何來(lái)處理超出手機(jī)屏幕大小的游戲地圖。

如圖所示為程序效果動(dòng)畫(huà)圖

地圖滾動(dòng)的原理

在本人之前博客的文章中介紹過(guò)人物在屏幕中的移動(dòng)方式,因?yàn)橹捌吹挠螒虻貓D是完全填充整個(gè)手機(jī)屏幕的,所以無(wú)需處理地圖的平滑滾動(dòng)。這篇文章我著重的向 大家介紹一下控制人物移動(dòng)后地圖滾動(dòng)的處理方式。舉個(gè)例子 如上圖所示 比如人物向右移動(dòng),如果地圖貼在屏幕左邊邊界 將先移動(dòng)人物在地圖的坐標(biāo),當(dāng)人物在屏幕中超過(guò)三分之二后 則將地圖向人物行走的反方向移動(dòng)給玩家一種人物還在向右移動(dòng)的假象,其實(shí)這時(shí)候人物只是播放向右行走的動(dòng)畫(huà) 在屏幕中的坐標(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 來(lái)保存人物在地圖中的X坐標(biāo) 一個(gè)是 mScreenPos 來(lái)保存人物在屏幕中的顯示坐標(biāo) mMapPos 來(lái)保存地圖在手機(jī)屏幕中的顯示坐標(biāo),按鍵盤(pán)右鍵后人物在地圖中的坐標(biāo)加上8像素(表示行走的步長(zhǎng)),當(dāng)人物的坐標(biāo)超過(guò)屏幕的三分之二的時(shí)候需要檢測(cè)地圖是 否已經(jīng)在邊界, 使用地圖繪制在屏幕中的X坐標(biāo) 加上地圖的寬度 判斷是否等于屏幕的寬度如果等式不成立 則表示地圖可以向左放移動(dòng) 這時(shí)候后人物mScreenPos人物顯示坐標(biāo)將不變 mMapPos地圖顯示坐標(biāo)將向左移動(dòng)人物一個(gè)步長(zhǎng)的位置,如果之前的等式成立 則表示地圖無(wú)法在向左移動(dòng) 這時(shí)候mScreenPos人物顯示坐標(biāo)將向右移動(dòng)人物一個(gè)步長(zhǎng)的位置 直到屏幕右側(cè)邊界 mMapPos地圖顯示坐標(biāo)不會(huì)改變。其三個(gè)方向的移動(dòng)算法完全一樣。

如圖所示地圖在平滑的滾動(dòng)

拓展學(xué)習(xí)之卡馬特地圖緩沖算法

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

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

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

這么看來(lái)卡馬克不愧是個(gè)游戲領(lǐng)域的天才,馬克地圖緩沖算法不愧是最最優(yōu)秀的地圖算法之一,大家如有有興趣可以去查一查關(guān)于卡馬特的資料,他確實(shí)是一個(gè)頂尖的游戲開(kāi)發(fā)工程師。

相關(guān)文章

  • 仿網(wǎng)易新聞客戶(hù)端頭條ViewPager嵌套實(shí)例

    仿網(wǎng)易新聞客戶(hù)端頭條ViewPager嵌套實(shí)例

    正確使用requestDisallowInterceptTouchEvent(boolean flag)方法,下面為大家介紹下外層ViewPager布局的實(shí)例,感興趣的朋友可以參考下哈
    2013-06-06
  • Android中獲得手機(jī)屏幕大小實(shí)現(xiàn)代碼

    Android中獲得手機(jī)屏幕大小實(shí)現(xiàn)代碼

    這篇文章主要介紹了Android中獲得手機(jī)屏幕大小實(shí)現(xiàn)代碼,Android開(kāi)發(fā)中經(jīng)常需要獲得屏幕的寬高,本文直接封裝成一個(gè)工具類(lèi),需要的朋友可以參考下
    2015-06-06
  • Android使用Notification實(shí)現(xiàn)通知功能

    Android使用Notification實(shí)現(xiàn)通知功能

    這篇文章主要為大家詳細(xì)介紹了Android使用Notification實(shí)現(xiàn)通知功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • flutter  TextField換行自適應(yīng)的實(shí)現(xiàn)

    flutter TextField換行自適應(yīng)的實(shí)現(xiàn)

    這篇文章主要介紹了flutter TextField換行自適應(yīng)的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-02-02
  • Android Studio查看Android 5.x源碼的步驟詳解

    Android Studio查看Android 5.x源碼的步驟詳解

    Google為Android開(kāi)發(fā)者帶來(lái)Android Studio,用來(lái)取代Eclipse。從Android Studio出現(xiàn)起,整機(jī)開(kāi)發(fā)和Android源碼閱讀和編輯一定能用上它。這篇文章小編就帶大家學(xué)習(xí)下如何使用Android Studio查看Android 5.x源碼,有需要的可以參考借鑒。
    2016-09-09
  • Android控件PopupWindow模仿ios底部彈窗

    Android控件PopupWindow模仿ios底部彈窗

    這篇文章主要為大家詳細(xì)介紹了Android控件PopupWindow仿ios底部彈窗效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-10-10
  • Android進(jìn)階——安卓調(diào)用ESC/POS打印機(jī)打印實(shí)例

    Android進(jìn)階——安卓調(diào)用ESC/POS打印機(jī)打印實(shí)例

    本篇文章主要介紹了Android進(jìn)階——安卓調(diào)用ESC/POS打印機(jī)打印實(shí)例,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。
    2017-04-04
  • 如何在WorkManager中處理異步任務(wù)詳解

    如何在WorkManager中處理異步任務(wù)詳解

    這篇文章主要給大家介紹了關(guān)于如何在WorkManager中處理異步任務(wù)的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-02-02
  • Android開(kāi)發(fā)之merge結(jié)合include優(yōu)化布局

    Android開(kāi)發(fā)之merge結(jié)合include優(yōu)化布局

    這篇文章主要為大家詳細(xì)介紹了Android開(kāi)發(fā)之merge結(jié)合include優(yōu)化布局,感興趣的朋友可以參考一下
    2016-06-06
  • Android實(shí)現(xiàn)左右滑動(dòng)效果的方法詳解

    Android實(shí)現(xiàn)左右滑動(dòng)效果的方法詳解

    本篇文章是對(duì)Android實(shí)現(xiàn)左右滑動(dòng)效果的方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-06-06

最新評(píng)論