*此教學使用Unity 5.3.2f1 (64-bit)免費版
*最後更新時間2016/03/24
position、localScale、Rotate可以用new Vector3就能達到效果,
但是不允許直接設置X.Y.Z的值而是必須先宣告Quaternion (四元數)
本文將教學: Unity角度的運用
Quaternion.Euler角度鎖定
transform.localEulerAngles判別式運用
----------------------------------------------------------------------------------------------------------
transform.Rotate可用於旋轉物件,例如轉動的風扇或螺旋槳
Quaternion.Euler可用於鎖定角度,不會旋轉,指定為多少就是多少不適合用來做平滑動作
Quaternion.identity 此為唯讀程式碼,可解釋為"不更動角度
transform.localEulerAngles.x 後面可加.x、.y、.z,用於判別式判斷角度,可用於搭配print除錯
先來看Rotaterotation的差別
(以下程式碼寫在Update裡)
每次旋轉增加2度的寫法(一直轉):
gameObject.transform.Rotate (new Vector3 (0f, 0f, 2f));
直接就是2度的寫法(指定角度不動):
gameObject.transform.rotation = Quaternion.Euler (0f, 0f, 2f);
接下來練習用Quaternion設置角度
先宣告一個Quaternion :
Quaternion quate = Quaternion.identity;
然後設置角度:設置X軸方向旋轉45度
quate.eulerAngles = new Vector3(45, 0, 0);
然後再把quate賦予給Gameobject:
gameobject.transform.rotation = quate;
transform.localEulerAngles可用於有關角度的判別式,例如
void FixedUpdate()
{
if (Input.GetMouseButton(1))
{
if (transform.eulerAngles.z <= 10)
{ transform.Rotate(Vector3.forward * Time.deltaTime * 10);> }
}
else
{
if (transform.eulerAngles.z > 0)
{
transform.Rotate(-Vector3.forward * Time.deltaTime * 10);
if (180.0f < transform.eulerAngles.z)
{ transform.eulerAngles = Vector3.zero;
}
}
}
沒有留言:
張貼留言