加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-14 21:45:46 所属栏目:百科 来源:网络整理
导读:小满(bill man)个人原创,欢迎转载,转载请注明地址,小满(bill man)的专栏地址http://blog.csdn.net/bill_man 继续简易动作游戏实例,本篇加入小怪并且加入小怪与主角的碰撞检测,效果如下: 首先在场景的初始化函数中加入小怪的精灵,并设置位置与锚点

小满(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

如有错误之处,希望大家多多指正

下一篇继续简易动作游戏实例

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读