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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

cocos2d-x游戏实例(27)-简易动作游戏(5)

發布時間:2024/4/11 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。