分为两种碰撞
准备条件
因为碰撞和物理引擎默认都是不开启的, 所以下面这两个方法必须先要开启才能使用, 否则白搭
条件, 在scene根目录或者根节点下初始启动代码, 必须在onLoad事件中执行
onLoad () {
//开启碰撞功能(非物理)
var collider = cc.director.getCollisionManager();
collider.enabled = true;
// collider.enabledDebugDraw = true;
// collider.enabledDrawBoundingBox = true;
//开启物理引擎
var physics = cc.director.getPhysicsManager();
physics.enabled = true;
// physics.gravity.y = 1000;
var db = cc.PhysicsManager.DrawBits;
// physics.debugDrawFlags = db.e_aabbBit|db.e_jointBit|db.e_shapeBit;
}
形状碰撞 Collider

包括box collider / circle collider / poly collider
添加碰撞事件
要求碰撞的两个对象, 都必须太难嫁collider组建
onCollisionEnter(other:cc.Component, self){
console.log("collision enter");
}
onCollisionStay(other:cc.Component, self){
console.log("collision stay");
}
onCollisionExit(other:cc.Component, self){
console.log("collision exit");
}
物理碰撞 PhysicsCollider
需要两个对象都添加RigidBody 刚体, PhysicsCollider 碰撞体
两个刚体必须都开启碰撞侦听 (Enable Collider Listen)
如果不想产生碰撞, 而只是产生碰撞事件, 那么勾选sensor


onBeginContact(contact, selfCollider, otherCollider){
console.log("onBeginContact");
}
onEndContact(contact, selfCollider, otherCollider){
console.log("onEndContact");
}
onPreSolve(contact, selfCollider, otherCollider) {
}
onPostSolve(contact, selfCollider, otherCollider) {
}
https://docs.cocos.com/creator/api/zh/classes/RigidBody.html#onbegincontact
https://www.cnblogs.com/orxx/p/10453351.html
https://blog.csdn.net/iyaodi/article/details/103306222
https://blog.csdn.net/techtiger/article/details/21444941
网友评论