Unity14--物理系统--刚体、触发器、Force和Toque扭矩、恒力

来源:互联网 发布:中国城市化率数据 编辑:程序博客网 时间:2024/04/30 03:37
一、刚体

1.刚体创建RigidBodyDemo文件

void Start () {

        //1.获取刚体组件,改属性

        Rigidbody m_rigidbody = gameObject.GetComponent<Rigidbody>();

     

        m_rigidbody.mass = 2;      //改质量属性

        m_rigidbody.useGravity =false;//改重力属性

    }

 2.发生碰撞的条件:

    //主动方必须有Rigidbody    发生碰撞的两个游戏对象必须有Collider(碰撞器检测)本例子是红方块

   //被动方对于RigidBody 可有可无。

   //参数表示被动方

   //下面都要背会会手写,都是生命周期函数

    voidOnCollisionEnter(Collision col)

    {

        Debug.Log("开始碰撞");

    }

    voidOnCollisionStay(Collision col)

    {

        Debug.Log("持续碰撞");

    }

    voidOnCollisionExit(Collision col)

    {

        Debug.Log("碰撞结束"+col.collider.gameObject .name );//出来的参数表示被动方的

    }

二、触发器

     点上Box Collider 里的Is Trigger 的√

     //触发器的条件:

     //发生碰撞的物体,两者其中之一有RigidBody即可,发生碰撞的两个游戏对象必须有Collider(碰撞器检测),其中一方勾选Is

       Trigger即可

    //参数还是被动方

 void OnTriggerEnter(Collision other)//可游戏中建个加血的场地东西

    {

        Debug.Log("触发器开始出发" + other);

        GameObject.Destroy(gameObject);  //销毁自身,做子弹打击物体,挨到子弹消失

         Destroy(other.gameObject);             //子弹打击物体也消失,

        //好好看看用UnityEngine,子弹打到墙上,有子弹消失

    }

    void OnTriggerStay(Collision other)

    {

        Debug.Log("触发器检测中" + other);

    }

    void OnTriggerExit(Collision other)

    {

        Debug.Log("触发器结束" + other.gameObject .name );

}

三、

这里面有个bug:如果场地旋转,点击上方按钮改成世界坐标系Global,会检测重力下落

四、Force和Toque扭矩、恒力

(1)ForceDemo文件:

privateRigidbody m_rigidbody;

1.void Start () {

        m_rigidbody = GetComponent<Rigidbody>();//获取组件

}

2.void Update () {

        //1.世界坐标系走

      //  m_rigidbody.AddForce(Vector3.up* 10);//10抵消了9.8N,向上0.2,会越来越快

     m_rigidbody.AddForce(Vector3.forward, ForceMode.Impulse);          //脉冲力,可产生弧线,炮弹子弹效果

     m_rigidbody.AddForce(Vector3.forward+Vector3.up, ForceMode.Impulse);//合力45度方向

 

        //2在自己的坐标系移动

        m_rigidbody.AddRelativeForce(Vector3.up);        

  

  (2)扭矩

        m_rigidbody.AddTorque(Vector3.up);//旋转的切线上旋转

        m_rigidbody.AddRelativeTorque(Vector3.up * 5);//绕自身的Y轴旋转

 

  (3)恒力组件添加会绑定RigidBody,改变刚体里的Angular Drag 角阻力,比如小饰品秋千不停的转

            添加这个     //Component  -- physics --Constant Force //




原创粉丝点击