欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Cocos Creator 系统碰撞检测

程序员文章站 2022-03-13 13:53:34
...

碰撞组件

  • 矩形:Cocos Creator 系统碰撞检测

  • 圆形:Cocos Creator 系统碰撞检测

  • 多边形Cocos Creator 系统碰撞检测

属性:

属性 解释
Editing 是否开启编辑
Tag 标签,用于区分碰撞组件
Offset 相对于节点的偏移位置
Size 矩形碰撞组件的大小
Radius 圆形碰撞组件的半径
Points 多边形碰撞组件的顶点坐标集合

接口:

// 开启碰撞检测,默认关闭
cc.director.getCollisionManager().enabled = true;
// 开启碰撞检测范围的绘制
cc.director.getCollisionManager().enabledDebugDraw = true; 
// 开启碰撞组件的包围盒绘制
cc.director.getCollisionManager().enabledDrawBoundingBox = true; 

回调:
当碰撞系统检测到有碰撞产生时,将会以回调的方式通知使用者,如果产生碰撞的碰撞组件依附的节点下挂的脚本中有实现以下函数,则会自动调用以下函数,

/**
 * 当碰撞产生的时候调用
 * @param  {Collider} other 产生碰撞的另一个碰撞组件
 * @param  {Collider} self  产生碰撞的自身的碰撞组件
 */
onCollisionEnter: function (other, self) {
    console.log('on collision enter');

    // 碰撞系统会计算出碰撞组件在世界坐标系下的相关的值,并放到 world 这个属性里面
    var world = self.world;

    // 碰撞组件的 aabb 碰撞框
    var aabb = world.aabb;

    // 节点碰撞前上一帧 aabb 碰撞框的位置
    var preAabb = world.preAabb;

    // 碰撞框的世界矩阵
    var t = world.transform;

    // 以下属性为圆形碰撞组件特有属性
    var r = world.radius;
    var p = world.position;

    // 以下属性为 矩形 和 多边形 碰撞组件特有属性
    var ps = world.points;
},

/**
 * 当碰撞产生后,碰撞结束前的情况下,每次计算碰撞结果后调用
 * @param  {Collider} other 产生碰撞的另一个碰撞组件
 * @param  {Collider} self  产生碰撞的自身的碰撞组件
 */
onCollisionStay: function (other, self) {
    console.log('on collision stay');
},

/**
 * 当碰撞结束后调用
 * @param  {Collider} other 产生碰撞的另一个碰撞组件
 * @param  {Collider} self  产生碰撞的自身的碰撞组件
 */
onCollisionExit: function (other, self) {
    console.log('on collision exit');
}

参数:

  • 矩形:Cocos Creator 系统碰撞检测

  • 圆形:Cocos Creator 系统碰撞检测

  • 多边形:Cocos Creator 系统碰撞检测

属性 解释
world.aabb 代表碰撞组件的aabb框,即碰撞产生时,碰撞组件的矩形框,是一个Rect
world.preAabb 代表碰撞前上一帧的aabb框
world.matrix 代表碰撞框的世界矩阵
world.position 代表碰撞时碰撞框的位置坐标(圆形碰撞组件特有)
world.radius 代表碰撞时碰撞框的半径(圆形碰撞组件特有)
world.points 代表碰撞时碰撞框的所有顶点坐标(矩形和多边形碰撞组件特有)
相关标签: Cocos Creator