我的猜測是你找的Transform.localEulerAngles
(你可以找到更多關於它here)。我會做你的情況是讓你不想在這個其他移動和使用球面線性插值的軸(S):
Vector3 currentLocalEulerAngles = transform.localEulerAngles;
Vector3 targetLocalEulerAngles = /*What you want*/ Vector3.zero;
float slerpSpeed;
transform.localEulerAngles = Vector3.Slerp(transform.localEulerAngles, new Vector3(currentLocalEulerAngles.x, targetLocalEulerAngles.y, targetLocalEulerAngles.z), slerpSpeed * Time.deltaTime);
編輯:要清楚,我建議做有事情的這種方式記住在這種情況下,相機經常被放置爲的GameObject位於的玩家。這樣,你只需要旋轉什麼可以稱爲CameraHolder:球員(做你想要什麼)>CameraHolder(沿着局部軸旋轉)>相機(固定或得到振盪或者你想要的):)
EDIT2:這裏有一個小腳本,將你在尋找什麼(希望):你只需要設置你的相機爲您球員的孩子,把它,所以它「看起來」你球員與理想的距離/角度,最後加入這個CameraHolder腳本您相機。
using UnityEngine;
[RequireComponent(typeof(Camera))]
public class CameraHolder : MonoBehaviour
{
[Range(0.0f, 10.0f)]
[SerializeField]
private float m_CameraResetSpeed = 4.0f;
[Range(0.0f, 10.0f)]
[SerializeField]
private float m_MinAngleToStopReseting = 2.0f;
private Transform m_CameraHolderTransform;
private Vector3 m_CameraHolderWorldEulerAngles;
private bool m_ResetingCamera;
void Start()
{
GameObject cameraHolder = new GameObject("CameraHolder");
m_CameraHolderTransform = cameraHolder.transform;
m_CameraHolderTransform.SetParent(transform.parent);
m_CameraHolderTransform.localPosition = Vector3.zero;
m_CameraHolderTransform.localRotation = Quaternion.identity;
m_CameraHolderTransform.localScale = Vector3.one;
transform.SetParent(cameraHolder.transform);
m_CameraHolderWorldEulerAngles = m_CameraHolderTransform.eulerAngles;
m_ResetingCamera = false;
}
void LateUpdate()
{
if(m_ResetingCamera)
{
m_CameraHolderTransform.localEulerAngles = new Vector3(0.0f,
Mathf.LerpAngle(m_CameraHolderTransform.localEulerAngles.y, 0.0f, m_CameraResetSpeed * Time.deltaTime), 0.0f);
if(Mathf.Abs(m_CameraHolderTransform.localEulerAngles.y) < m_MinAngleToStopReseting)
{
Debug.Log("Reset done...");
m_ResetingCamera = false;
m_CameraHolderWorldEulerAngles = m_CameraHolderTransform.eulerAngles;
}
}
else
{
m_CameraHolderTransform.eulerAngles = m_CameraHolderWorldEulerAngles;
}
}
public void ResetCamera()
{
Debug.Log("Reseting camera...");
m_ResetingCamera = true;
}
}
我懷疑你可能已經在這錯估了OP的意圖 - 它聽起來像願望是旋轉的攝像頭周圍的點(玩家位置),而不是僅僅在原地繞自身軸線。 – Serlite
@Serlite你指出了我忘了添加到我的答案...(在我的腦海裏,它非常清楚,但我忘了添加它)。我會編輯我的答案。 – Kardux
@Kardux我想要的行爲就是:[demo gif](http://gph.is/2gVkmZe)。只有在xz計劃中,相機在相機周圍的平穩旋轉才能將相機重置在後面。 –