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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

cocos2d-x游戏实例(4)-地图碰撞

發(fā)布時間:2024/4/11 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 cocos2d-x游戏实例(4)-地图碰撞 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

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

這篇繼續(xù)上一篇的內(nèi)容,繼續(xù)地圖碰撞,上一篇我們得到了我們所處位置的地圖索引,這樣我們就可以知道我們要控制的角色的位置對應(yīng)的地圖索引值了,那么如何知道我們這塊地圖是可以去的還是碰撞呢,這里我介紹兩種辦法

1.分層法

????我覺得這個更適合45度角的地圖,因為如果使用后一種辦法,把所有的圖素寬放在一層里的話,會有遮擋這個問題的,當然不是說第二種不能只不過我們把地圖的碰撞圖素放在一層里我們會把相應(yīng)的表現(xiàn)圖素放在新的一層里,所以還是要分層。

首先看第一種情況的地圖,如下圖


就是新建一層Tree層,把所有的樹(這里不能碰撞的圖素),grass層鋪滿草,這里人可以在草中移動,檢測碰撞的代碼如下:


首先通過convertto2d函數(shù)獲得主角在地圖上的索引值,這里為了方便,我把索引值也做成CCPoint的類型了,但是事實上,它并不是一個CCPoint,然后獲得Tree層,然后根據(jù)索引及tileAt函數(shù)獲得在該位置的圖素,如果他不為空,則證明這個位置是不可碰撞的,那么我們就回滾剛才的移動位置操作,并停止該位置的移動即可。這種方法解決起來相對簡單。

2.地圖GID及屬性法

這種方法應(yīng)該是更為“正統(tǒng)”的,首先在地圖上建一層,如下


只是建一層,然后我們在圖素上新建屬性,我們建一個叫“conflict”屬性,并為他設(shè)定不同的值即可。


我們把不可碰得設(shè)為1,把可碰的設(shè)為0。代碼如下:


我們首先或取GID,其實我們可以根據(jù)gid直接判斷哪些可碰哪些不能通過。但是為了演示如何獲得屬性,我們還有之后的代碼,通過gid獲得屬性,屬性是一組鍵值對,然后獲得conflict值,這樣我們就可以判斷了

如有錯誤之處,希望大家多多指正

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

總結(jié)

以上是生活随笔為你收集整理的cocos2d-x游戏实例(4)-地图碰撞的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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