using UnityEngine;
public class LookAtCamera : MonoBehaviour
{
private Transform cameraTransform;
public float rotationSpeed = 10f;
void Start()
{
cameraTransform = Camera.main.transform; // 獲取主攝像機的Transform組件
}
void Update()
{
Vector3 direction = cameraTransform.position - transform.position;
direction.y = 0f; // 只在x-z平面上旋轉
Quaternion targetRotation = Quaternion.LookRotation(direction, Vector3.up);
transform.rotation = Quaternion.Slerp(transform.rotation, targetRotation, rotationSpeed * Time.deltaTime);
}
}
在上面的代碼中,首先定義了一個cameraTransform變量,用于存儲攝像機的Transform組件。
使用Camera.main
方法來獲取場景中的主攝像機,然后獲取其Transform組件并將其賦值給cameraTransform
變量。
然后,在Update方法中,我們計算出攝像機位置和物體位置之間的向量差,并將其存儲在direction變量中。由于我們只想在x-z平面上旋轉物體,因此我們將direction向量的y分量設置為0。
接下來,我們調用Quaternion.LookRotation函數(shù),并將direction向量和向上的向量(Vector3.up)作為參數(shù)傳遞給它,以獲取旋轉Quaternion,使物體朝向攝像機方向。然后,我們使用Quaternion.Slerp函數(shù)來平滑地將物體的旋轉角度過渡到目標角度。我們還將rotationSpeed變量用于控制旋轉速度。文章來源:http://www.zghlxwxcb.cn/news/detail-553729.html
最后,將上述腳本掛載到需要始終朝向攝像機并繞y軸旋轉的物體上即可。文章來源地址http://www.zghlxwxcb.cn/news/detail-553729.html
到了這里,關于Unity物體始終朝向攝像機方向的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!