




已閱讀5頁(yè),還剩5頁(yè)未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
ANDROID游戲碰撞原理游戲碰撞的大致可以分為這幾種類(lèi)1.主角與邊界的碰撞,限制主角不能走出手機(jī)屏幕外。2.主角與物理層的碰撞,與地圖中的房子桌子 椅子等等。3.主角與游戲人物之間的碰撞,這里指NPC等。4.主角與腳本框發(fā)生的碰撞,例如走進(jìn)房間出線(xiàn)一段劇情對(duì)話(huà)等等。由此可見(jiàn)游戲中的碰撞主要是可以分為1.點(diǎn)與矩形之間的碰撞2.矩形與矩形之間的碰撞3.圓形與圓形之間的碰撞4.圓形與矩形之間的碰撞 今天我主要介紹一下以上中最特殊的一個(gè)碰撞方式主角與物理層之間的碰撞。如 圖所示:每個(gè)小方塊中儲(chǔ)存著地圖塊的信息,在二位數(shù)組中如果為-1表示屬于物理層不可通過(guò),其它均可通過(guò)。也就是說(shuō)-1 這個(gè)地圖塊的位置繪制這物理層的東西。主角在行走的時(shí)候通過(guò)自己的坐標(biāo)原點(diǎn)計(jì)算出自己在二位數(shù)組中的索引,然后根據(jù)索引找到數(shù)組中的數(shù)值判斷自己是否可以通過(guò)。繪制地圖根據(jù)地圖編輯器生成出來(lái)的數(shù)組,一定是先繪制背景層地圖,然后在繪制第物理地圖等等。物理碰撞層生成的數(shù)組是不用繪制的,只需要每次主角移動(dòng)坐標(biāo)的時(shí)候檢測(cè)是否與物理層發(fā)生碰撞.背景底層物理層碰撞層說(shuō)到這里可能有些朋友會(huì)問(wèn)為什么第一層要和第二層分開(kāi)?這兩層不能合二為一嗎?如圖所示:用兩個(gè)圖層主要是為了解決物理層圖片不能全部顯示,好比下面這個(gè)荷花,它的繪制區(qū)域在矩形中周?chē)咨膭t是透明的區(qū)域,所以我們需要先繪制地圖背景層在繪制物理層這樣就可以遮蓋透明區(qū)域。代碼的實(shí)現(xiàn)方式首先我們需要利用onKeyDown()和onKeyUp()方法確定當(dāng)前手機(jī)那個(gè)按鍵被按下,根據(jù)按鍵信息更新人物動(dòng)畫(huà),檢測(cè)是否碰撞。mIskeyDown = true 表示 按下方向鍵下mIskeyLeft = true 表示 按下方向鍵左mIskeyRight = true 表示 按下方向鍵右mIskeyUp = true 表示 按下方向鍵上mHeroPosX 表示人物的X坐標(biāo)mHeroPosY 表示人物的Y坐標(biāo)mAnimationState 表示播放動(dòng)畫(huà)的ID 因?yàn)槿宋镄凶哂?組方向的動(dòng)畫(huà) 所以 mAnimationState 可以修改播放那組動(dòng)畫(huà)view plain/*根據(jù)按鍵更新顯示動(dòng)畫(huà)*/*在碰撞數(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;主角每次移動(dòng)的時(shí)候我們還需要檢測(cè)一下他的X Y坐標(biāo)是否超出屏幕 如果超出屏幕則保持他目前的位置不變view plain/*檢測(cè)人物是否出屏*/isBorderCollision=false;if(mHeroPosX=mScreenWidth)mHeroPosX=mScreenWidth;isBorderCollision=true;if(mHeroPosY=mScreenHeight)mHeroPosY=mScreenHeight;isBorderCollision=true;主角應(yīng)該有兩個(gè)坐標(biāo)點(diǎn) 如圖所示: 為什么主角要有2個(gè)坐標(biāo)點(diǎn)的原因是 左上角的00點(diǎn)程序是不能進(jìn)行邏輯判斷的比如檢測(cè)主角向右移動(dòng)走超出屏幕,因?yàn)樽鴺?biāo)點(diǎn)在左上角所以整個(gè)圖片都走出屏幕以后程序才能判斷出人物出屏,所以不能用左上角的點(diǎn)來(lái)作為主角的坐標(biāo)原點(diǎn),須要用下面的點(diǎn)來(lái)計(jì)算人物的邏輯坐標(biāo)我的建議是我們只計(jì)算下面這個(gè)點(diǎn)然后根據(jù)這個(gè)點(diǎn)在算出來(lái)圖片左上角的原點(diǎn),然后在通知圖像繪制。判斷碰撞檢測(cè)mCollision這個(gè)二維數(shù)是地圖編輯器生成出來(lái)的,用來(lái)組保存碰撞層的所有信息 -1表示不能通過(guò)mHeroIndexX 、mHeroIndexY 代表當(dāng)前人物在二位數(shù)組中的索引位置,根據(jù)索引找到二維數(shù)組中的值判斷是否碰撞mBackHeroPosX、mBackHeroPosY 備份發(fā)生碰撞前人物的坐標(biāo)一旦碰撞以后將使用備份的坐標(biāo)避免人物碰撞后不能返回。view plainif(mCollisionmHeroIndexYmHeroIndexX=-1)mHeroPosX=mBackHeroPosX;mHeroPosY=mBackHeroPos
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025屆新疆物理高二下期末學(xué)業(yè)質(zhì)量監(jiān)測(cè)模擬試題含解析
- 中國(guó)自然景區(qū)行業(yè)市場(chǎng)全景評(píng)估及發(fā)展趨勢(shì)研究預(yù)測(cè)報(bào)告
- 健康相關(guān)行為干預(yù)課件
- 酒店室內(nèi)裝飾工程施工組織設(shè)計(jì)方案
- 健康消費(fèi)課件
- 葛洲壩集團(tuán)外事管理辦法
- 虹口區(qū)丙類(lèi)倉(cāng)儲(chǔ)管理辦法
- 融資產(chǎn)品及管理暫行辦法
- 衡陽(yáng)市農(nóng)村住房管理辦法
- 衍生品管理辦法征求意見(jiàn)
- 2025年中新天津生態(tài)城教育系統(tǒng)教職人員招聘考試筆試試題
- 三非人員介紹課件
- 喝酒大賽活動(dòng)方案
- 服務(wù)認(rèn)證培訓(xùn)課件
- 工地施工特種設(shè)備管理制度
- 江蘇省南京、鎮(zhèn)江、徐州三市多校聯(lián)考2025年高二下第二學(xué)期5月月考語(yǔ)文試卷
- 瀝青路面施工質(zhì)量控制要點(diǎn)課件
- 廬山市國(guó)有投資控股集團(tuán)有限公司招聘筆試題庫(kù)2025
- T/CADBM 63-2022建筑室內(nèi)窗飾產(chǎn)品百葉簾
- 2025年貴州省公務(wù)員錄用考試《行測(cè)》真題及答案解析
- 香囊課件小學(xué)生
評(píng)論
0/150
提交評(píng)論