一. 创建矩形判断区域
1. 用getBoundingBox();创建矩形,在图片周围创建矩形,判断区域较大
2. 用cc.rect具体去创建矩形,能够减少判定区域(rect的创建wid和hei不能为负数)
二. 判断碰撞
直接使用API : if (cc.rectIntersectsRect(矩形1,矩形2)) { 碰撞以后发生的事件}
三. 使用一个给你创建矩形上颜色的工具
/**
* addChild(new DebugShowRect())
* cc.eventManager.dispatchCustomEvent(DEBUG_SHOW_ME_RECT, [cc.rect(100,100,100,200),cc.color.RED])
*/
var DEBUG_SHOW_ME_RECT = "DEBUG_SHOW_ME_RECT"
var DebugShowRect = cc.Layer.extend({
c:null,
_rectArr:null,
ctor:function(){
this._super()
cc.error("处于线框debug模式")
this._draw = new cc.DrawNode()
this._draw.drawRect(cc.p(-1,-1), cc.p(0,0), null,2,cc.color(255, 0, 0));
this.addChild(this._draw, 1)
this._rectArr = []
var that = this
cc.eventManager.addCustomListener(DEBUG_SHOW_ME_RECT, function(event){
var dataArr = event.getUserData()
var data = dataArr[0]
var color = dataArr[1]
that._rectArr.push([cc.p(data.x, data.y), cc.p(data.x+data.width, data.y+data.height), color])
})
this.scheduleUpdate()
},
update:function(){
if(this._rectArr.length <= 0) return
this._draw.clear()
this._draw.ctor()
for (var i=0;i<this._rectArr.length; i++){
var carr = this._rectArr[i];
if(carr[2] != undefined){
this._draw.drawRect(carr[0], carr[1], null,2,carr[2]);
}else {
this._draw.drawRect(carr[0], carr[1], null,2,cc.color(255, 0, 0));
}
}
this._rectArr = []
}
})