[筆記]物件的移動和旋轉
- 閔翔 詹
- 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