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

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

下一篇繼續簡易動作遊戲實例



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章