首先获取到将要检测的两个对象,接下来得到两个对象的块区域,然后检测碰撞,例如:
for(var ob in aArr){ for(var op in bArr){ var _index1=aArr[ob] var _index2=bArr[op] var _rect1=cc.rect(_index1.getPosition().x-_index1.width*0.5,_index1.getPosition().y-_index1.height*0.5,_index1.width,_index1.height) var _rect2=cc.rect(_index2.getPosition().x-_index2.width*0.5,_index2.getPosition().y-_index2.height*0.5,_index2.width,_index2.height) if(cc.rectIntersectsRect(_rect1,_rect2)){ _index2.removeFromParent(true) _index1.enemyFlyLife--; if(_index1.enemyFlyLife<0) { if(_index1.myTag==2){ this.schedule(this.war,0.5) } _index1.removeFromParent(true) aArr.splice(aArr.indexOf(_index1),1) /* * 计算分数 * */ var s=this._score_label.getString() var score=Number((s.split(":"))[1]) score+=3 this._score_label.setString("SCORE:"+score) } bArr.splice(bArr.indexOf(_index2),1) }这里我写的是打飞机游戏中判断敌方子弹和我方飞机的碰撞,首先遍历敌方子弹和我方飞机数组,获取到某一颗子弹和我方飞机,定义_rect1和_rect2,得到他们的块区域面积,cc.rect()里面的四个值,分别为该块的左下角一点的坐标,然后是该点对应两边的长度。
然后使用if(cc.rectIntersectsRect())检测。判断点和框的碰撞用if(cc.rectContainsPoint())