Unity中物體的旋轉方法代碼


第一種:

transform.Rotate(new Vector3(90, 0, 0));

//重載方式重載方式一 第一個參數是 x軸 旋轉度數,第二個參數是 Y 軸 旋轉度數 ,第三個參數是Z軸旋轉度數 ,
//第四個參數是自身還是世界坐標
public void Rotate(float xAngle, float yAngle, float zAngle, Space relativeTo = Space.Self);
//重載方式二 第一個參數沿着誰旋轉 第二個參數是旋轉的角度 第三個參數是自身還是世界坐標
public void Rotate(Vector3 axis, float angle, Space relativeTo = Space.Self);
// 重載方式三 第一個參數沿着誰旋轉 第二個參數是沿着自身還是世界坐標 一般的默認世界旋轉
public void Rotate(Vector3 eulers, Space relativeTo = Space.Self);

using UnityEngine;

public class ExampleClass : MonoBehaviour

{

public float speed; // 速度
void Update()
{
//以每秒1度的速度圍繞其局部X軸旋轉對象
transform.Rotate(Vector3.right * Time.deltaTime*speed);

// 以世界坐標的Y 軸進行旋轉
transform.Rotate(Vector3.up * Time.deltaTime, Space.World*speed);
}
}
第二種: 四元數旋轉

transform.rotation = Quaternion.Euler(45, 45, 45);

// 重載方式是一個參數是vector3 類型的數據   以下那兩個只是形式不一樣

public static Quaternion Euler(float x, float y, float z);

public static Quaternion Euler(Vector3 euler);

using UnityEngine;

public class Example : MonoBehaviour
{
void Start()
{
// 繞着Y 軸旋轉30 度
Vector3 rotationVector = new Vector3(0, 30, 0);
Quaternion rotation = Quaternion.Euler(rotationVector);
}
}
第三種種: 通過四元數   一個物體以一定的速度轉向目標物體

//通過t在a和b之間進行球面插值,將參數t夾在[0,1]范圍內。

transform.rotation = Quaternion.Slerp();

// 重載方式三個參數返回一個 Quaternion 值也就是一個transform.rotation 類型

//第一個參數是起點 第二是終點 第三個是所需要的時間

public static Quaternion Slerp(Quaternion a, Quaternion b, float t); 

//這個用個官網示例
using UnityEngine;
using System.Collections;

public class ExampleClass : MonoBehaviour
{
public Transform from;
public Transform to;

private float timeCount = 0.0f;

void Update()
{
transform.rotation = Quaternion.Slerp(from.rotation, to.rotation, timeCount);
timeCount = timeCount + Time.deltaTime;
}
}
第四種:

// 繞着某一物體旋轉

transform.RotateAround();

// 回調函數  第一個參數是繞着某一物體旋轉,第二個是旋轉軸向 第三個參數是 旋轉的速度

public void RotateAround(Vector3 point, Vector3 axis, float angle);

// 官網示例代碼  

using UnityEngine;

public class Example : MonoBehaviour
{
void Update()
{
// 讓物體以20度/秒的速度繞着地球原點旋轉。.
transform.RotateAround(Vector3.zero, Vector3.up, 20 * Time.deltaTime);
}
}
第五種:歐拉角旋轉 有旋轉的最大值  還有萬向鎖,但是本人不習慣使用歐拉角旋轉,大部分使用的都是四元數旋轉

         其實歐拉角和四元素旋轉各有各的好處,最適合哪個就用哪個

using UnityEngine;

public class Example : MonoBehaviour
{
// 使用歐拉角指定一個絕對旋轉
float yRotation = 5.0f;

void Start()
{
// 打印旋轉x最大值
print(transform.eulerAngles.x);
// 打印旋轉y最大值
print(transform.eulerAngles.y);
// 打印旋轉z最大值
print(transform.eulerAngles.z);
}

void Update()
{
yRotation += Input.GetAxis("Horizontal");
transform.eulerAngles = new Vector3(10, yRotation, 0);
}
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM