cocos2d-x游戏实例(27)-简易动作游戏(5)
小滿(bill man)個人原創,歡迎轉載,轉載請注明地址,小滿(bill man)的專欄地址http://blog.csdn.net/bill_man
繼續簡易動作游戲實例,本篇加入小怪并且加入小怪與主角的碰撞檢測,效果如下:
首先在場景的初始化函數中加入小怪的精靈,并設置位置與錨點:
enemy?=?CCSprite::spriteWithFile("SpinningPeas.png");
map->addChild(enemy,?map->getChildren()->count()?);
enemy->setPositionInPixels(ccp(winSize.width/2?+?80,32));
enemy->setAnchorPoint(ccp(0.5f,0));
下面是小怪的邏輯,就是左右移動,邏輯代碼如下:
就是用一個簡單的計步變量enemymovetick,并根據這個值給每幀的移動步長。
為了使碰撞檢測精準,我自定義了主角與怪的寬高,也加到init函數中:
ownsize?=?CCSizeMake(40,100);
othersize?=?CCSizeMake(32,32);
下面來看碰撞檢測函數:
在函數根據兩個精靈的位置,以及之前設置的寬度,來檢測碰撞,兩個精靈的錨點都在腳底,錨點的橫坐標之差的絕對值小于寬度一半差的和,縱坐標的差(主角縱坐標減去小怪縱坐標只差)小于小怪的高,大于主角高乘以-1,也就是小怪和主角的相對位置如下:
小怪比這位置高(小矩形為小怪):
小怪比這位置低:
也就是要在這個范圍內:
在update函數中調用檢測函數,并且處理碰撞:
首先為主角加入受傷動作,然后將isreduce標志為true,也就是在受傷后5秒內不再檢測碰撞,然后用schedule函數在5秒后將isreduce置回false。并將水平速度設置為0,
如有錯誤之處,希望大家多多指正
下一篇繼續簡易動作游戲實例
超強干貨來襲 云風專訪:近40年碼齡,通宵達旦的技術人生總結
以上是生活随笔為你收集整理的cocos2d-x游戏实例(27)-简易动作游戏(5)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: cocos2d-x游戏实例(26)-简易
- 下一篇: cocos2d-x游戏实例(28)-简易