Unity3D中的碰撞:
在unity中,有普通碰撞体Collider和触发器(Trigger)两种碰撞体,两个普通碰撞体会发生碰撞并产生力学现象,触发器则像是个无法触碰而又真实存在的东西,也会触发碰撞事件,但另一个物体会穿过它,碰撞发生的前提是两碰撞体有一方携带刚体(Rigidbody)组件。 物体对碰撞体进行处理的三个函数:void OnCollisionEnter(Collision collision){};//当碰撞体进入当前物体时触发的回调函数void OnCollisionStay(Collision collision){};//当碰撞体停留当前物体内时触发的回调函数void OnCollisionExit(Collision collision){};//当碰撞体离开当前物体时触发的回调函数物
体对触发器进行处理的三个函数:
void OnTriggerEnter(Collider other){}//当触发器进入当前物体时触发的回调函数void OnTriggerStay(Collider other){}//当触发器停留在当前物体时触发的回调函数void OnTriggerExit(Collider other){}//当触发器离开当前物体时触发的回调函数
Unity2D中的碰撞:
概念和Unity3D大致相同 物体对2D碰撞体进行处理的三个函数:void OnCollisionEnter2D(Collision2D collision){}//当2D碰撞体进入当前物体时触发的回调函数void OnCollisionStay2D(Collision2D collision){}//当2D碰撞体停留当前物体内时触发的回调函数void OnCollisionExit2D(Collision2D collision){}//当2D碰撞体离开当前物体时触发的回调函数物
体对2D触发器进行处理的三个函数:
void OnTriggerEnter2D(Collider2D other){}//当2D触发器进入当前物体时触发的回调函数void OnTriggerStay2D(Collider2D other){}//当2D触发器停留在当前物体时触发的回调函数void OnTriggerExit2D(Collider2D other){}//当2D触发器离开当前物体时触发的回调函数
博主在2D游戏开发的时候遇到几次碰撞没有发生,原因基本都是某一方的碰撞体或者刚体(RigidBody)没有2D后缀。。。。。。。。。。所以不要在2D的项目里出现3D的组件啊,找一天的BUG