创建一个从 fromDirection
旋转到 toDirection
的旋转。
用于创建一个旋转,该旋转从第一个 Vector (fromDirection) 开始,旋转到第二个 Vector (toDirection)。必须在脚本中设置这些 Vector。
//This example shows how the rotation works between two GameObjects. Attach this to a GameObject.
//Make sure to assign the GameObject you would like your GameObject to rotate towards in the Inspector
using UnityEngine;
public class SetFromToRotationExample : MonoBehaviour
{
//This is the Transform of the second GameObject
public Transform m_NextPoint;
Quaternion m_MyQuaternion;
float m_Speed = 1.0f;
void Start()
{
m_MyQuaternion = new Quaternion();
}
void Update()
{
//Set the Quaternion rotation from the GameObject's position to the next GameObject's position
m_MyQuaternion.SetFromToRotation(transform.position, m_NextPoint.position);
//Move the GameObject towards the second GameObject
transform.position = Vector3.Lerp(transform.position, m_NextPoint.position, m_Speed * Time.deltaTime);
//Rotate the GameObject towards the second GameObject
transform.rotation = m_MyQuaternion * transform.rotation;
}
}
//In this example your GameObject rotates towards the position of the mouse
using UnityEngine;
public class Example2 : MonoBehaviour
{
Quaternion m_MyQuaternion;
float m_Speed = 1.0f;
Vector3 m_MousePosition;
void Start()
{
m_MyQuaternion = new Quaternion();
}
void Update()
{
//Fetch the mouse's position
m_MousePosition = Input.mousePosition;
//Fix how far into the scene the mouse should be
m_MousePosition.z = 50.0f;
//Transform the mouse position into world space
m_MousePosition = Camera.main.ScreenToWorldPoint(m_MousePosition);
//Set the Quaternion rotation from the GameObject's position to the mouse position
m_MyQuaternion.SetFromToRotation(transform.position, m_MousePosition);
//Move the GameObject towards the mouse position
transform.position = Vector3.Lerp(transform.position, m_MousePosition, m_Speed * Time.deltaTime);
//Rotate the GameObject towards the mouse position
transform.rotation = m_MyQuaternion * transform.rotation;
}
}