Cocos Creator V3.2 物理篇-分组和掩码-初学者4篇

1:首先 了解js运算符 

    如下图

点击查看:分组和掩码 · Cocos Creator

二进制为 0001,表示在第 0 组(从 0 开始) 

二进制为 11,表示在第 01 组(从 0 开始) 

二进制为 111,表示在第 01  ,2组(从 0 开始) 

2:碰撞原理

只要以下条件为真就会进行碰撞检测 否则就穿透不碰撞

(GroupA & MaskB) && (GroupB & MaskA)

 1:产生碰撞效果代码如下: 

 ColliderStr?.setGroup(1 << 0) //添加分组 默认分组0
        ColliderStr?.setMask(1 << 0)  //添加掩码 layer=0 

        this.SphereRB?.setGroup(1 << 0) //添加分组 默认分组0
        this.SphereRB?.setMask(1 << 0)  //添加掩码 layer=0 
        // (GroupA & MaskB) && (GroupB & MaskA)  true
        // 0001&0001=>1 && 0001&0001=>1   1&&1 true

 产生碰撞⚪被弹开

2:穿透不发生碰撞

 ColliderStr?.setGroup(1 << 0) //添加分组 默认分组0  GroupA
        ColliderStr?.setMask(1 << 0)  //添加掩码 layer=0    MaskA

        this.SphereRB?.setGroup(1 << 0) //添加分组 默认分组0  GroupB
        this.SphereRB?.setMask(1 << 1)  //添加掩码 layer=1   MaskB
        // (GroupA & MaskB) && (GroupB & MaskA)  true or false
        // 0001&0010=>0  &&  0001&0001=>1  0&&1 =>false

 

正方体穿过圆体 不发生碰撞 

3:注意观察 (1 << 0) + (1 << 1) 和 分组的关系 相信你很快就能理解,

      ColliderStr?.setGroup((1 << 0) + (1 << 1)) //添加分组 默认分组0 ,1  GroupA
        ColliderStr?.setMask((1 << 0) + (1 << 1))  //添加掩码 layer=0  layer=1   MaskA

        ColliderStr?.setGroup((1 << 0) + (1 << 1)) //添加分组 默认分组0  ,1 GroupA
        ColliderStr?.setMask((1 << 0) + (1 << 1))  //添加掩码 layer=0  layer=1, layer=2   MaskA
        // 0001<<0 = 0001   0001<<2 = 0100   0001+0010 = 0011  默认分组 0 , 1 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值