zoukankan      html  css  js  c++  java
  • cocos creator基础-(十九)物理引擎基本配置

    1: 开启物理引擎与物理引擎的配置;
    2: 刚体的类型和刚体的主要属性;
    3: 碰撞器的使用和参数;

    开启物理引擎

      1: 编写脚本来开启物理引擎;
      2: 将这个脚本挂载到场景的根节点;
      3: 编写调试接口决定是否打开物理引擎调试;
      4: cc.director.getPhysicsManager().enabled = true; // 打开物理引擎
        cc.director.getPhysicsManager().debugDrawFlags 调试标志;
        var Bits = cc.PhysicsManager.DrawBits;
        cc.director.getPhysicsManager().debugDrawFlags = Bits.e_jointBit | Bits.e_shapeBit;
      5: cc.PhysicsManager:
        enable: 开启 debugDrawFlags: 调试标志, gravity: 重力加速度,二维向量

    cc.Class({
        extends: cc.Component,
    
        properties: {
            // foo: {
            //    default: null,      // The default value will be used only when the component attaching
            //                           to a node for the first time
            //    url: cc.Texture2D,  // optional, default is typeof default
            //    serializable: true, // optional, default is true
            //    visible: true,      // optional, default is true
            //    displayName: 'Foo', // optional
            //    readonly: false,    // optional, default is false
            // },
            // ...
            is_debug: false, // 是否显示调试信息;
            // 重力加速度是一个向量, 有方向的,2D, Vec重力加速度的大小;
            gravity: cc.p(0, -320), // 系统默认的
        },
    
        // use this for initialization
        onLoad: function () {
            // 游戏引擎的总控制
            // cc.Director, cc.director 区别呢?
            // 大写的cc.Director是一个类, 小写cc.direcotr全局的实例
            cc.director.getPhysicsManager().enabled = true; // 开启了物理引擎
            // 独立的形状,打开一个调试区域,游戏图像的,逻辑区域;
            // 开始调试模式:
            if (this.is_debug) { // 开启调试信息
                var Bits = cc.PhysicsManager.DrawBits; // 这个是我们要显示的类型
                cc.director.getPhysicsManager().debugDrawFlags = Bits.e_jointBit | Bits.e_shapeBit;
            }
            else { // 关闭调试信息
                cc.director.getPhysicsManager().debugDrawFlags = 0;
            }
            // 重力加速度的配置
            cc.director.getPhysicsManager().gravity = this.gravity;
        },
    
        // called every frame, uncomment this function to activate update callback
        // update: function (dt) {
    
        // },
    });

    重力加速度
    1: 物理引擎会有一个重力加速度,来模拟物理环境,你可以可以把重力加速度改成0,不受重力影响;
    2: 修改重力加速度:
      cc.director.getPhysicsManager().gravity = cc.p(0, -320);

    物理刚体
      1: 刚体:形状不会改变
      2: 刚体分为静态static,动态刚体dynamic, 不受力的刚体(Kinematic,不受作用力的影响);
      3: 刚体是受到物理作用的物体,由刚体带着节点移动;
      4: 刚体组件cc.RigidBoy:
        enabledContactListener: 是否开启碰撞事件的监听;
        bullet: 是否为子弹属性,防止高速穿越;
        allowSleep: 是否允许进入休眠状态,一段时间后如果物体没有任何状态改变会进入休眠状态;
        gravityScale: 该物体收重力的缩放;
        linearDamping: 线性阻尼,衰减线性速度;
        angularDamping: 角速度阻尼,衰减角速度;
        linearVelocity: 刚体的线性速度;
        angularVelocity: 刚体的角速度;
        fixedRotation: 是否固定不旋转;
        awake: 是否立刻唤醒此刚体;
        active: 是否激活这个刚体,如果不激活,那么刚体不会参与碰撞;

    刚体碰撞器
      1: 光有刚体还不够,还要为每个刚体添加一个物理性状;
      2: 物理形状的类型:
        矩形物理碰撞器;
        圆形物理碰撞器;
        多边形物理碰撞器;
        链条碰撞器: PhysicsChainCollider;
      3: 碰撞器的物理参数:
        Tag: 碰撞器的标记,区别一个节点上多个不同的碰撞器;
        Density: 相状的密度;
        Sensor: 是否为一个碰撞感应器;
        Friction: 摩擦系数;
        Restitution: 弹性系数[0, 1], 0没有弹性, 1完全弹性碰撞;
        Editing: 可以编辑碰撞器的形状;
      4: 一定要加物理碰撞器,而不是碰撞系统的碰撞器,非常容易出错误

  • 相关阅读:
    linux线程
    linux线程
    c++之堆、栈、数据段、
    fork()、僵死进程和孤儿进程
    linux之管理mysql
    linux之管理apache
    Django 时间与时区设置问题
    Django rest framework:__str__ returned non-string (type NoneType) 真正原因
    Django获取当前页面的URL——小记
    Django中出现:TemplateDoesNotExist at
  • 原文地址:https://www.cnblogs.com/orxx/p/10524458.html
Copyright © 2011-2022 走看看