




已閱讀5頁,還剩5頁未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
ANDROID游戲碰撞原理游戲碰撞的大致可以分為這幾種類1.主角與邊界的碰撞,限制主角不能走出手機(jī)屏幕外。2.主角與物理層的碰撞,與地圖中的房子桌子 椅子等等。3.主角與游戲人物之間的碰撞,這里指NPC等。4.主角與腳本框發(fā)生的碰撞,例如走進(jìn)房間出線一段劇情對話等等。由此可見游戲中的碰撞主要是可以分為1.點(diǎn)與矩形之間的碰撞2.矩形與矩形之間的碰撞3.圓形與圓形之間的碰撞4.圓形與矩形之間的碰撞 今天我主要介紹一下以上中最特殊的一個碰撞方式主角與物理層之間的碰撞。如 圖所示:每個小方塊中儲存著地圖塊的信息,在二位數(shù)組中如果為-1表示屬于物理層不可通過,其它均可通過。也就是說-1 這個地圖塊的位置繪制這物理層的東西。主角在行走的時候通過自己的坐標(biāo)原點(diǎn)計(jì)算出自己在二位數(shù)組中的索引,然后根據(jù)索引找到數(shù)組中的數(shù)值判斷自己是否可以通過。繪制地圖根據(jù)地圖編輯器生成出來的數(shù)組,一定是先繪制背景層地圖,然后在繪制第物理地圖等等。物理碰撞層生成的數(shù)組是不用繪制的,只需要每次主角移動坐標(biāo)的時候檢測是否與物理層發(fā)生碰撞.背景底層物理層碰撞層說到這里可能有些朋友會問為什么第一層要和第二層分開?這兩層不能合二為一嗎?如圖所示:用兩個圖層主要是為了解決物理層圖片不能全部顯示,好比下面這個荷花,它的繪制區(qū)域在矩形中周圍白色的則是透明的區(qū)域,所以我們需要先繪制地圖背景層在繪制物理層這樣就可以遮蓋透明區(qū)域。代碼的實(shí)現(xiàn)方式首先我們需要利用onKeyDown()和onKeyUp()方法確定當(dāng)前手機(jī)那個按鍵被按下,根據(jù)按鍵信息更新人物動畫,檢測是否碰撞。mIskeyDown = true 表示 按下方向鍵下mIskeyLeft = true 表示 按下方向鍵左mIskeyRight = true 表示 按下方向鍵右mIskeyUp = true 表示 按下方向鍵上mHeroPosX 表示人物的X坐標(biāo)mHeroPosY 表示人物的Y坐標(biāo)mAnimationState 表示播放動畫的ID 因?yàn)槿宋镄凶哂?組方向的動畫 所以 mAnimationState 可以修改播放那組動畫view plain/*根據(jù)按鍵更新顯示動畫*/*在碰撞數(shù)組中尋找看自己是否與地圖物理層發(fā)生碰撞*/if(mIskeyDown)mAnimationState=ANIM_DOWN;mHeroPosY+=HERO_STEP;elseif(mIskeyLeft)mAnimationState=ANIM_LEFT;mHeroPosX-=HERO_STEP;elseif(mIskeyRight)mAnimationState=ANIM_RIGHT;mHeroPosX+=HERO_STEP;elseif(mIskeyUp)mAnimationState=ANIM_UP;mHeroPosY-=HERO_STEP;主角每次移動的時候我們還需要檢測一下他的X Y坐標(biāo)是否超出屏幕 如果超出屏幕則保持他目前的位置不變view plain/*檢測人物是否出屏*/isBorderCollision=false;if(mHeroPosX=mScreenWidth)mHeroPosX=mScreenWidth;isBorderCollision=true;if(mHeroPosY=mScreenHeight)mHeroPosY=mScreenHeight;isBorderCollision=true;主角應(yīng)該有兩個坐標(biāo)點(diǎn) 如圖所示: 為什么主角要有2個坐標(biāo)點(diǎn)的原因是 左上角的00點(diǎn)程序是不能進(jìn)行邏輯判斷的比如檢測主角向右移動走超出屏幕,因?yàn)樽鴺?biāo)點(diǎn)在左上角所以整個圖片都走出屏幕以后程序才能判斷出人物出屏,所以不能用左上角的點(diǎn)來作為主角的坐標(biāo)原點(diǎn),須要用下面的點(diǎn)來計(jì)算人物的邏輯坐標(biāo)我的建議是我們只計(jì)算下面這個點(diǎn)然后根據(jù)這個點(diǎn)在算出來圖片左上角的原點(diǎn),然后在通知圖像繪制。判斷碰撞檢測mCollision這個二維數(shù)是地圖編輯器生成出來的,用來組保存碰撞層的所有信息 -1表示不能通過mHeroIndexX 、mHeroIndexY 代表當(dāng)前人物在二位數(shù)組中的索引位置,根據(jù)索引找到二維數(shù)組中的值判斷是否碰撞mBackHeroPosX、mBackHeroPosY 備份發(fā)生碰撞前人物的坐標(biāo)一旦碰撞以后將使用備份的坐標(biāo)避免人物碰撞后不能返回。view plainif(mCollisionmHeroIndexYmHeroIndexX=-1)mHeroPosX=mBackHeroPosX;mHeroPosY=mBackHeroPos
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 前臺年終工作總結(jié)合集(3篇)
- 社團(tuán)部門工作總結(jié)(錦集15篇)
- 2025至2030年中國管板粘接密封膠數(shù)據(jù)監(jiān)測研究報(bào)告
- 2025至2030年中國微型油水分離器數(shù)據(jù)監(jiān)測研究報(bào)告
- 2025至2030年中國不銹鋼手動拆邊機(jī)數(shù)據(jù)監(jiān)測研究報(bào)告
- 2025年中國汽車五金材料市場調(diào)查研究報(bào)告
- 2025年中國手機(jī)式手燈市場調(diào)查研究報(bào)告
- 2024高考政治二輪復(fù)習(xí)專題能力訓(xùn)練七當(dāng)代國際社會
- 2025年語文考試一年級綜合試題及答案
- 總賬會計(jì)年終工作總結(jié)(11篇)
- 文物修復(fù)師國家職業(yè)技能標(biāo)準(zhǔn)
- 危險(xiǎn)化學(xué)品目錄2023
- YY/T 0825-2011牙科學(xué)牙齒外漂白產(chǎn)品
- 浙江省醫(yī)療機(jī)構(gòu)麻醉藥品、精神藥品管理實(shí)施細(xì)則
- 《中國近現(xiàn)代史綱要》 課件 第十一章 中國特色社會主義進(jìn)入新時代
- 機(jī)關(guān)單位申請要人的請示范文
- 鈾礦冶安全規(guī)程
- 國標(biāo)熱鍍鋅鋼管規(guī)格尺寸理論重量表
- 設(shè)計(jì)方案投標(biāo)技術(shù)標(biāo)文件
- 圓來如此簡單公開課優(yōu)質(zhì)課件獲獎
- (本科)審計(jì)(第五版)全套教學(xué)課件完整版PPT
評論
0/150
提交評論