Unity3D物理组件之刚体(九)

本节要点

#1.变换组件运动特点

使用 Transform.Translate()方法移动物体的位置,特点如下:

①移动的物体会“穿透”场景中其他的物体模型;

②移动的物体不会受重力影响(到达场景边缘外,不会下落)。

#2.刚体组件简介

1.刚体简介

刚体:Rigidbody,属于物理类组件。

作用:添加了刚体组件的游戏物体,就有了重力,就会做自由落体运动。也就意

味着可以像现实中的物体一样运动。

2.给物体添加刚体组件

选中游戏物体-->菜单 Component-->Physics-->Rigidbody

#3.刚体组件属性

1.Mass[质量]

设置物体的质量,也就是重量。质量单位是 KG。

2.Drag[阻力]

空气阻力,0 表示无阻力,值很大时物体会停止运动。

3.Angular Drag[角阻力]

受到扭曲力时的空气阻力,0 表示无阻力,值很大时物体会停止运动。

4.Use Gravity[使用重力]

是否使用重力。

#4.使用刚体移动物体

1.相关方法

Rigidbody.MovePosition(Vector3):使用刚体移动物体的位置。

使用刚体移动物体,物体是根据世界坐标系的方向移动的。

使用刚体移动物体,物体会触发物理相关的事件。

2.参数

MovePosition 中的 Vector3 要使用“当前位置”+ 方向 的方式。

Transform.Position:属性 当前物体的位置。

3.特点

使用刚体移动物体,特点如下:

①会于场景中的模型物体发生碰撞;

②会受重力影响(到达场景边缘外,会下落)。


场景视图

Unity3D物理组件之刚体(九)_第1张图片

关键代码

InputTest

public class InputTest : MonoBehaviour {

    // Use this for initialization
    void Start () {
    
    }
    
    // Update is called once per frame
    void Update () {

        //键盘的值
        //按下A键持续返回true
        if (Input.GetKey(KeyCode.A))
        {
            Debug.Log("Get...........A");
        }
        //按下A键瞬间返回true
        if (Input.GetKeyDown(KeyCode.A))
        {
            Debug.Log("Getkeydown...........A Down!");
        }
        //松开A键瞬间返回true
        if (Input.GetKeyUp(KeyCode.A))
        {
            Debug.Log("Getkeyup..............A Up!");
        }


        //鼠标的值
        //获取鼠标的按键,持续返回true
        if (Input.GetMouseButton(0))
        {
            Debug.Log("Mouse Left");
        }


        //点击鼠标按键瞬间返回true
        if (Input.GetMouseButtonDown(0))
        {
            Debug.Log("Left Down!");
        }

        //松开鼠标瞬间返回true
        if (Input.GetMouseButtonUp(0))
        {
            Debug.Log("Left Up!");
        }
    }
}


StudentMove

public class StudentMove : MonoBehaviour {

    private Transform m_Transform;

    // Use this for initialization
    void Start () {

        //获取相应组件的引用,声明同类型字段去接收
        m_Transform=gameObject.GetComponent();
    }
    
    // Update is called once per frame
    void Update () {
    
        //移动物体位置的关键语句
      //  m_Transform.Translate(Vector3.forward*0.1f,Space.World);
        //参数1:Vector3移动物体的三维变量(枚举类型),表示x,y,z;Space参数2:移动物体的坐标系(枚举类型)自身坐标系或世界坐标系
        //0.1f 表示将当前速度下调到原来十分之一;切记加上f

        //获取相应键控制方向;w a s d
        if (Input.GetKey(KeyCode.W))
        {
            m_Transform.Translate(Vector3.forward*0.1f,Space.World);//往前
        }

        if (Input.GetKey(KeyCode.S))
        {
            m_Transform.Translate(Vector3.back * 0.1f, Space.World);//向后
        }

        if (Input.GetKey(KeyCode.A))
        {
            m_Transform.Translate(Vector3.left * 0.1f, Space.World);//向左
        }

        if (Input.GetKey(KeyCode.D))
        {
            m_Transform.Translate(Vector3.right * 0.1f, Space.World);//向右
        }


    
    }
}

小结

Unity3D物理组件之刚体(九)_第2张图片
游戏物体与组件.png
Unity3D物理组件之刚体(九)_第3张图片
疯狂的小鸟.jpg
Unity3D物理组件之刚体(九)_第4张图片
Unity API.png

你可能感兴趣的:(Unity3D物理组件之刚体(九))