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

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

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

Cocos Creator踩坑篇:碰撞系统问题整合_第1张图片

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

Cocos Creator踩坑篇:碰撞系统问题整合_第2张图片

综上,如果你想在产生物理效果的同时也分发碰撞函数,就必须把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(这样可以确保不互相穿过)

 

你可能感兴趣的:(Cocos,Creator)