cocos2dx - JS - 碰撞检测
2017-03-25 02:28
387 查看
碰撞检测是游戏的一个重要组成部分,我们这里使用一种最简单的方法,就是获取精灵的矩形碰撞框。当然圆形的碰撞检测也比较简单,其他形状就复杂多了。
首先是如何获取矩形碰撞框:
var hBox=this.hero.getBoundingBox();//主角碰撞框
var eBox=this.enemy.getBoundingBox();//敌人碰撞框
其次如何判断他们发生了碰撞:
if(cc.rectIntersectsRect(hBox, eBox)){//判断主角与敌人是否发生碰撞
//这里写发生碰撞后要执行的代码
}
现在我们要让主角发射的子弹在击中敌人的时候能消失,好吧,有上面的基础,直接上代码吧。
新建一个函数update,在ctor函数中this.schedule(this.update);每帧调用update。
好了,debug,发现子弹打到敌人会消失了。
首先是如何获取矩形碰撞框:
var hBox=this.hero.getBoundingBox();//主角碰撞框
var eBox=this.enemy.getBoundingBox();//敌人碰撞框
其次如何判断他们发生了碰撞:
if(cc.rectIntersectsRect(hBox, eBox)){//判断主角与敌人是否发生碰撞
//这里写发生碰撞后要执行的代码
}
现在我们要让主角发射的子弹在击中敌人的时候能消失,好吧,有上面的基础,直接上代码吧。
新建一个函数update,在ctor函数中this.schedule(this.update);每帧调用update。
1 update:function(){ 2 var i; 3 var hBox=this.hero.getBoundingBox();//主角碰撞框 4 var eBox=this.enemy.getBoundingBox();//敌人碰撞框 5 for(i in this._bullets){//遍历所有子弹 6 var bullet=this._bullets[i]; 7 var bBox=bullet.getBoundingBox();//子弹碰撞框 8 if(cc.rectIntersectsRect(bBox,eBox)){//判断子弹与敌人是否发生碰撞 9 this._bullets.splice(i, 1);//从子弹数组中删除子弹 10 this.removeChild(bullet,true);//移除子弹 11 } 12 } 13 }
好了,debug,发现子弹打到敌人会消失了。
相关文章推荐
- cocos2dx碰撞检测实现
- cocos2dx打飞机项目笔记六:GameScene类和碰撞检测 boundingbox
- cocos2dx物理引擎和碰撞检测(一)
- 完美的像素碰撞检测(使用cocos2dx)
- cocos2dx物理引擎和碰撞检测(四)形状Shapes
- cocos2dx粒子碰撞检测
- cocos2dx物理引擎和碰撞检测(七)关节(Joints)
- cocos2dx3.X项目重写(四)添加地板,障碍物和碰撞检测
- cocos2dx中精灵的实时碰撞检测
- cocos2dx物理引擎和碰撞检测(五)框架Fixtures
- cocos2dx 缩放场景以后的碰撞检测跟触摸
- js检测两个对象是否碰撞
- cocos2dx 精灵的碰撞检测和消灭
- cocos2dx tiledmap 碰撞检测
- cocos2dx游戏开发——微信打飞机学习笔记(十)——碰撞检测的搭建
- cocos2dx 精灵的碰撞检测和消灭(3)
- Cocos2dx 多边形碰撞检测
- 【COCOS2DX-游戏开发之三六】圆与未旋转矩形的碰撞检测(上篇)
- cocos2dx物理引擎和碰撞检测(三)
- cocos2dx物理引擎和碰撞检测(六)物体Bodies