美文网首页
Cocos Creator 碰撞事件

Cocos Creator 碰撞事件

作者: Zszen | 来源:发表于2020-05-29 04:06 被阅读0次

分为两种碰撞

准备条件

因为碰撞和物理引擎默认都是不开启的, 所以下面这两个方法必须先要开启才能使用, 否则白搭
条件, 在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

相关文章

网友评论

      本文标题:Cocos Creator 碰撞事件

      本文链接:https://www.haomeiwen.com/subject/nrgvmhtx.html