unity--18 小總結,移動物體及旋轉

3d物體移動–變換組件

移動物體的位置基本上可以分爲三個大類,

第一種是直接賦值:

        transform.position += Vector3.left * Time.deltaTime;
        //transform.position += -transform.right * Time.deltaTime;

要麼是vector3的靜態屬性,要麼是tranform的屬性,vector3更加齊全,包括左右,上下,前後。
而transform的屬性只有右,上,前,獲取對應的反方向要加負號。
在這裏插入圖片描述
另外,如果物體自身的軸與世界座標軸不一致。那麼vector3.left 的移動是以世界座標爲準,而-transform.right是以自身軸系爲準。

適用於:已知移動方向和速度的時候

第二種調用Translate方法,該方法默認是以自身軸系爲準:
transform.Translate(Vector3.left * Time.deltaTime);

①和前面的直接賦值沒區別,效果一樣,唯一的區別在於Translate還可以指定以哪個座標系爲基準。
默認的是 Space.Self,如果要以世界座標爲準,則改爲Space.World
在這裏插入圖片描述
②重載形式,直接提供浮點數

        transform.Translate(-0.01f,0,0);

③重載形式,相對於某個物體的軸系移動

//相對於主攝像機的軸系位置移動
        transform.Translate(Vector3.right * Time.deltaTime, Camera.main.transform);

在這裏插入圖片描述
Translate方法可以完全替代+=賦值

第三種是 Vector3.MoveTowards方法

適用於知道起始點,終點,速度的時候。

	 Vector3 target;
     float speed;


    private void Start()
    {
        target = new Vector3(10, 10, 10);
        speed = 10 ;
    }

    void Update()
    {
    // 起點,終點,速度
        transform.position = Vector3.MoveTowards(transform.position, target, speed * Time.deltaTime);
    }

旋轉

同理,旋轉物體也是可以用

transform.Rotate(Vector3.right * Time.deltaTime);

它以自身的軸爲基準,含義是以自身x軸(紅色軸)爲軸心向裏旋轉。
在這裏插入圖片描述
如果是Vector3.left,以自身x軸(紅色軸)爲軸心向外旋轉。
想要以世界座標軸,則添加

        transform.Rotate(Vector3.right * Time.deltaTime,Space.World);

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章