Cocos Creator踩坑篇:碰撞系统问题整合

Cocos的碰撞系统设计者堪称天才,我只花了两个小时就找到了问题所在。

碰撞组件中的Collider并不具备物理特性,意思是两个带Collider组件的物体发生碰撞,并不会有任何物理上的反馈,这和刚体没有任何关系,但是,碰撞事件的触发还只能用这几个Collider

下面这几个Collider才具有物理特性,在添加的时候会自动加上RigidBody(这点还行,可圈可点)

综上,如果你想在产生物理效果的同时也分发碰撞函数,就必须把Collider,PhysicsCollider,RigidBody这三个组件全部加上

这还不算完,你需要在代码里开启全局的碰撞系统

        cc.director.getCollisionManager().enabled = true;
        cc.director.getPhysicsManager().enabled = true;

嗯,考虑得非常全面,生怕初学者不小心开启了碰撞检测,超级贴心,给你个么么哒? 

吐槽了那么多,给点干货吧

碰撞系统回调函数

  • 碰撞产生时 onCollisionEnter: function (other, self) 
  • 碰撞保持时 onCollisionStay: function (other, self) 
  • 碰撞结束时onCollisionExit: function (other, self) 

other是产生碰撞的另一个碰撞组件,self是产生碰撞的自身的碰撞组件。

Collider component 的 enabled 是单个对象的碰撞检测是否开启

node.getComponent(cc.CircleCollider).enabled = false

发生物理碰撞的双方RigidBody的Type属性必须有一个Static一个Dynamic(这样可以确保不互相穿过)

 

  • 9
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 13
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值