top of page

[筆記]物件的移動和旋轉

  • Writer: 閔翔 詹
    閔翔 詹
  • May 3, 2018
  • 2 min read

1.移動

1)控制移動方向:Transform.translate

(1)用浮點數控制位移

float X;

float Y;

float Z

Transform.translate(X,Y,Z);

(2) 用向量控制位移

Vector3 move = new Vector3(x,y,z);

Transform.translate(move*Time.detaTime);

p.s.Unity裡常用的向量:

Vector3.back => Vector3(0,0,-1)

Vector3.forward => Vector3(0,0,1)

Vector3.left => Vector3(-1,0,0)

Vector3.right = > Vector3(1,0,0)

Vector3.down => Vector3(0,-1,0)

Vector3.up => Vector3(0,1,0)

Vector3.one => Vector3(1,1,1)

Vector3.zero => Vector3(0,0,0)

2)重製物件座標(這個比較像瞬移~

Transform.position = new Vector3(x,y,z);

2.旋轉

Unity裡面的旋轉api大致上可以分為兩種, 第一種是:只改變旋轉角度 第二種是:同時改變其座標位置、旋轉角度 因為能達到旋轉的方法還蠻多種的, 所以這邊只介紹我常用的方法^^

(1)自轉: 當你想讓一個物體旋轉時,有哪些要素是必要的呢? 首先當然有要旋轉的角度(這邊的角度可以理解為繞哪一個軸旋轉幾度),其次是速度

transform.Rotate(eularAngle(x,y,z));

因為如果放在update函式裡是每一幀執行一次, 所以我通常會改成 transform.Rotate(Vector3.one * speed * Time.deltaTime); 來配合每一幀的速度

當然你也可以使用transform.rotation來手動調整每一幀要到哪個角度,不過transform.rotation裡的角度是旋轉到哪一個角度,而非每一個時間單位旋轉多少角度

(2)圓周運動(白話文就是繞著某個物件旋轉)

跟自轉一樣,不過圓周運動多了一個要素要控制,那就是旋轉半徑,但其實控制旋轉半徑也只需要在多寫一行就好了 transform.RotateAround(圍繞的中心點 , 圍繞的旋轉軸 , 旋轉的速度)

transform.translate(0,0,(旋轉體座標 - 中心點座標).magnutude - 半徑)

補充一下:vector3.magnitude是求出向量的大小的api 而上面整段公式想要表達的其實就只是,求出物體距離中心點距離是大於半徑還是小於半徑,因為物體始終朝向中心點, 所以只要移動z軸座標就可以做到控制半徑

其他參考資料:


Comments


bottom of page