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, 如有错误之处,希望大家多多指正 下一篇继续简易动作游戏实例 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |