cocos2d-x游戏实例(25)-简易动作游戏(3)
小滿(bill man)個人原創,歡迎轉載,轉載請注明地址,小滿(bill man)的專欄地址http://blog.csdn.net/bill_man
本篇進行垂直方向上的碰撞檢測,測試的方法就是把主角的初始高度設高,讓主角落至地面:
來看判斷垂直方向的碰撞的函數playermapvcollision:
前面幾句是獲得主角的位置和寬高以及獲得地圖,然后通過如下幾句獲得主角在地圖上的索引橫縱坐標并進一步獲得主角所在圖素塊的tilegid?:
indexx?=?(playerpoint.x)?/?map->getTileSize().width;
indexy?=?map->getMapSize().height?-?(playerpoint.y)?/?map->getTileSize().height;
CCPoint?playerindex?=?ccp(indexx,indexy);
int?tilegid?=?layer->tileGIDAt(playerindex);
當獲得縱坐標的時候需要注意的是縱坐標除以圖素高并不能直接獲得在地圖中的圖素縱坐標索引,因為地圖的索引是從左上角開始的,而坐標是從左下角開始,所以需要轉換一下,用整個地圖的縱坐標格數map->getMapSize().height減去我們縱坐標除以圖素高的值便是主角所在位置的縱坐標索引值。接下來獲得之前定義的“collion”值,如果“collion”值為1,那么停掉主角在縱坐標運動的標志vmove,否則vmove會被設置為1,也就是讓主角一直延縱坐標移動。
然后在update中調用playermapvcollision,然后在處理縱坐標的位移,這里只是簡單的讓主角作勻速直線運動
如有錯誤之處,希望大家多多指正
下一篇繼續簡易動作游戲實例
總結
以上是生活随笔為你收集整理的cocos2d-x游戏实例(25)-简易动作游戏(3)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: cocos2d-x游戏实例(24)-简易
- 下一篇: cocos2d-x游戏实例(26)-简易