美文网首页Cocos2d-X与游戏开发Cocos Creator
Cocos Creator中刚体、碰撞组件、物理组件区别

Cocos Creator中刚体、碰撞组件、物理组件区别

作者: Thomas游戏圈 | 来源:发表于2020-06-09 13:55 被阅读0次

    一、 如何移动刚体?

    当我们的一个节点上有一个刚体,我们要进行移动。一般我们都会通过节点的setPosition进行移动,但是刚体不会被影响,不管是Static、还是Dynamic还是Kinematic都不会被影响我们可以通过以下方式操作:

    1、瞬时动作cc.place来进行移动而且不会影响刚体原本的运动轨迹

    2、Action的所有动作。cc.moveBy;cc.moveTo;等等

    二、 碰撞组件和物理组件有什么不同?

    碰撞组件没有类型之分,只要相交就会发生碰撞事件,如果不对碰撞进行处理,那就没有任何影响。

    物理碰撞组件分类型,因为他们先会绑定刚体。如果刚体类型不同则会有不同的效果。

    和Dynamtic类型刚体绑定的PhysicsBoxCollider会受重力影响,可以设置速度;

    和Static类型刚体绑定的物理组件,不会受重力影响,不可以设置速度,可以通过设置位置让其移动;

    和Kinematic类型刚体绑定的物理组件,不受重力影响,可以设置速度。

    三、 三种物理组件有什么不同?

    绑定了Dynamic(运动)类型的物理组件不能穿透绑定了Static(静态)类型的物理组件;绑定了Dynamic类型的物理组件不能穿透绑定了Kinematic类型的物理组件;

    Static和Kinematic不会触发碰撞事件,Static和Static;Kinematic和Kinematic不会触发碰撞事件;

    四、 物理组件如何进行碰撞回调?

    首先RigidBody要开启碰撞监听。

    然后当前节点下有如下函数。

    在函数碰撞体刚开始接触时调用一次。

    onBeginContatct:function(contact,selfCollider,otherCollider){}

    在两个碰撞体结束接触时被调用一次

    onEndContact:fucntion(contact,setCollider,otherCollider){}

    每次要处理碰撞体接触逻辑时被调用

    onPreSolve:function(contact,selfCollider,otherCollider){}

    每次处理完碰撞体接触时被调用

    onPostSolve:fucntion(contact,selfCollider,otherCollider){}

    五、 碰撞组件的回调

    脚本里面先开启碰撞监听,因为默认是关闭。代码如下:

    var manager = cc.director.getCollisionManager();

    manager.enabled = true;

    然后有以下函数:

    //当碰撞产生时调用

    onCollisionEnter:function(other,self){

    }

    //在碰撞产生后,在碰撞结束前,每次计算完碰撞结果后调用

    onCollisionStay:function(other,self){}

    //当碰撞结束后调用

    onCollisionExit;function(other,self){}

    相关应用案例:例如跑酷类游戏(超级玛丽)、打砖块类游戏、桌球类游戏、趣味游戏(黄金矿工)等。如有需要可以联系我们!点击链接加入群聊【unity/cocos交流二群】

    相关文章

      网友评论

        本文标题:Cocos Creator中刚体、碰撞组件、物理组件区别

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