cocos2d-x 植物大战僵尸(四)到达植物枪得攻击范围内,植物枪旋转枪口攻击僵尸...

经过这两天研究取得了点成果;当僵尸到达植物枪得攻击范围内,植物枪旋转枪口攻击僵尸,现在摆在眼前的问题是如何动态检测植物枪和僵尸之间的距离问题?




开始我走了弯路,因为植物枪一旦放置后位置就不会在发生改变,所以我就想用过update()更新/监听僵尸坐标的方法来实现动态获取两者之间距离的方法,可惜失败了;问题我也不是很清楚,结果就是一闪而过,僵尸消失了;当然这不是我要讲的重点;重点是我的另外一种方法;


使用boundingBox()来检测植物枪和僵尸之间的距离问题;我们应该还记得碰撞检测吧,我要说的意思是:在每个精灵外面其实都有一个boundingBox()这个boundingbox()会随精灵一起运动,并始终保持在精灵的外面,它的坐标是动态变化的,,所以与其检测植物枪和僵尸的距离不如检测两个boundingBox()的距离;


下面来解释下几个系统函数的用法:

void GameLayer::checkJs()
{

//获取两个精灵的boundingbox的最外层坐标,并求两者之间距离的绝对值
if( fabs(ccpDistance(ccp(this->_plantSprite->boundingBox().getMaxX(),this->_plantSprite->boundingBox().getMaxY()),ccp(this->_maoJsSprite->boundingBox().getMaxX(),this->_maoJsSprite->boundingBox().getMaxY())))<150) //如果这两个精灵距离的绝对值小与150,则表示僵尸进入了植物枪的攻击范围,植物枪就要移动枪口攻击僵尸
{
this->R =R+0.1; //声明一个float R;初始值为0;
this->_plantSprite->setRotationY(this->R-7); //这里的7是需要根据实际情况来控制的,要在视觉上让人感觉 到植物枪在跟踪着僵尸,当僵尸移动出150的圆形区域后植物枪停止旋转;
}
}


我们可以利用这个原理做很多事情,比如放置一只狗来回游走,方发现僵尸后,,就跑过去咬他。。嘿嘿

当然部分代码我觉得还有些问题,暂时就不往这里写了。。我只是说下我个人对待这些问题的思路。您要是有更好的ideas ,可以留言给我。。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值