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