public class Test : MonoBehaviour
{
public GameObject PrefabObj; //预设
public Transform Cube1; //加载后眼睛面向的方向和位置
Transform m_head; //头部相机
GameObject m_CmaeraRig; //加载后的对象
void Start()
{
m_CmaeraRig = Instantiate(PrefabObj) as GameObject;
m_head = m_CmaeraRig.transform.FindChild("Camera (head)");
StartCoroutine(SetTransform());
}
float f;
void Update()
{
if (Input.GetKeyDown(KeyCode.Space))
{
SetCameraRigTransform();
}
}
IEnumerator SetTransform()
{
//加载进来之后需要给一段时间让它初始化
yield return new WaitForSeconds(0.03f);
SetCameraRigTransform();
}
/// <summary>
/// 设置CameraRig的变换
/// </summary>
void SetCameraRigTransform()
{
m_CmaeraRig.transform.position = Cube1.position;
f = Cube1.eulerAngles.y - m_head.localEulerAngles.y;
if (f > 360) f -= 360;
if (f < 0) f += 360;
m_CmaeraRig.transform.rotation = Quaternion.Euler(new Vector3(Cube1.eulerAngles.x, f, Cube1.eulerAngles.z));
}
}
SteamVR动态加载后固定视角
最新推荐文章于 2023-01-03 10:11:16 发布
本文介绍了一个Unity3D脚本,用于在SteamVR环境中动态加载对象后,如何将视角固定对准特定方向。通过在Start()函数中实例化预设对象并延时设置CameraRig的位置和旋转,确保在Update()中按下空格键时能够正确调整视角。SetCameraRigTransform()函数用于计算并应用正确的旋转差值,保持视角稳定。
摘要由CSDN通过智能技术生成