日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

cocos2d-x游戏实例(12)-实时拖动主角移动

發(fā)布時(shí)間:2024/4/11 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 cocos2d-x游戏实例(12)-实时拖动主角移动 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

小滿(bill man)個(gè)人原創(chuàng),歡迎轉(zhuǎn)載,轉(zhuǎn)載請(qǐng)注明地址,小滿(bill man)的專欄地址http://blog.csdn.net/bill_man

上一篇講解了記錄拖動(dòng)的路徑并使主角按照此路徑移動(dòng)的cocos2d-x實(shí)現(xiàn)。這篇講解另一個(gè)操作方式,這種方式在縱版射擊游戲中有不少的實(shí)現(xiàn),就是觸屏拖動(dòng)主角實(shí)時(shí)移動(dòng),也就是說(shuō)沒(méi)有上一節(jié)那個(gè)記錄路徑然后主角再移動(dòng)的過(guò)程,主角是隨你的手指移動(dòng)的,之后的例子里我也將完整的實(shí)現(xiàn)一個(gè)簡(jiǎn)單的縱版射擊游戲,就采用這種操作方式。

和上一篇一樣,我們也要實(shí)現(xiàn)如下三個(gè)函數(shù):

virtual?void?ccTouchesBegan(CCSet?*pTouches,?CCEvent?*pEvent);

virtual?void?ccTouchesMoved(CCSet?*pTouches,?CCEvent?*pEvent);

virtual?void?ccTouchesEnded(CCSet?*pTouches,?CCEvent?*pEvent);

這個(gè)實(shí)現(xiàn)起來(lái)比上一篇的問(wèn)題要簡(jiǎn)單,但是我們要實(shí)現(xiàn)一個(gè)小算法,就是,我們檢測(cè)我們的觸電在主角的矩形范圍內(nèi)的一個(gè)點(diǎn),那我們的觸點(diǎn)不一定在主角的錨點(diǎn)上,這樣我們不能直接用觸點(diǎn)直接設(shè)置主角的位置,我們需要處理一下,見(jiàn)下圖


如圖p點(diǎn)是我們的觸點(diǎn),a點(diǎn)是我們的錨點(diǎn),我們只要滿足一下公式:

Px?-?Ax?=?dx,Py?-?Ay?=?dy就可以了。

首先來(lái)看ccTouchesBegan的實(shí)現(xiàn):


首先還是獲得觸點(diǎn),然后我們就要獲得主角位置,和上次的程序一樣,主角還是綁定在地圖上的,所以我們要獲得主角的絕對(duì)坐標(biāo),然后判斷觸點(diǎn)是否在主角這個(gè)矩形范圍內(nèi),如果在范圍內(nèi),我們把索引值設(shè)置為-5-5表示起始點(diǎn)有效,-1表示起始點(diǎn)無(wú)效,然后我們就通過(guò)剛才那個(gè)公式獲得dxdy(也就是xdeltaydelta)。

再來(lái)看ccTouchesMoved的實(shí)現(xiàn):


如果索引值為-5,那表示我們就可以控制主角了,然后我們要判斷觸點(diǎn)是否在屏幕范圍內(nèi),如果在屏幕范圍內(nèi),再判斷這個(gè)位置是否和主角當(dāng)前位置相同,如果不同才會(huì)設(shè)置主角位置,這里要說(shuō)到的是我們獲得上一個(gè)位置的方法,當(dāng)然,你也可以通過(guò)一個(gè)變量來(lái)控制,這里介紹通過(guò)計(jì)算得到的方法,首先通過(guò)主角的getposition方法獲得的坐標(biāo)只是主角相對(duì)于地圖的坐標(biāo),我們加上地圖的橫縱坐標(biāo)來(lái)獲得主角的絕對(duì)坐標(biāo),然后再通過(guò)Px?-?Ax?=?dxPy?-?Ay?=?dy公式獲得上一個(gè)觸點(diǎn)的位置,最后設(shè)置主角位置,注意首先還是通過(guò)Px?-?Ax?=?dxPy?-?Ay?=?dy公式獲得錨點(diǎn)應(yīng)該移動(dòng)到的位置,然后再減去地圖的位置獲得主角和地圖的相對(duì)坐標(biāo)

再來(lái)看ccTouchesEnded的實(shí)現(xiàn):


很簡(jiǎn)單,就是如果索引值為-5時(shí)重新設(shè)置為-1的“未激活”狀態(tài)。

如有錯(cuò)誤之處,希望大家多多指正

下一篇繼續(xù)游戲?qū)嵗?/p>

總結(jié)

以上是生活随笔為你收集整理的cocos2d-x游戏实例(12)-实时拖动主角移动的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。