Unity VR开发求助:进入传送门时重置相机Z轴与X轴旋转
传送门触发时重置相机旋转的实现方案
核心功能
玩家进入传送门触发区域时,自动重置VR相机的X轴(俯仰)和Z轴(滚转)旋转角度,保留Y轴(转向)角度,解决传送后相机姿态异常问题。
完整代码
using UnityEngine; public class PortalCameraReset : MonoBehaviour { // 拖拽赋值你的VR相机(例如CameraRig下的CenterEyeAnchor) public Transform vrCamera; private void OnTriggerEnter(Collider other) { // 仅响应玩家触发,根据你的玩家标签调整 if (other.CompareTag("Player")) { ResetCameraOrientation(); } } private void ResetCameraOrientation() { // 保留当前Y轴转向,重置X、Z轴旋转为0 float yRotation = vrCamera.eulerAngles.y; vrCamera.eulerAngles = new Vector3(0f, yRotation, 0f); } }
部署步骤
- 将脚本挂到你的
BasicPortal游戏对象上 - 在Inspector面板中,把VR相机对象拖到
vrCamera参数栏 - 确认
BasicPortal的Collider已勾选Is Trigger(从你的截图看已配置,无需改动) - 确保玩家对象的标签是
Player,如果不是,修改脚本中CompareTag的参数值
额外说明
- 如果相机是嵌套在Player下的局部旋转,可将
eulerAngles替换为localEulerAngles - 测试时只要玩家进入传送门触发范围,相机的俯仰和滚转会立刻回到水平状态,转向保持不变
内容的提问来源于stack exchange,提问作者Your RainBoy
相关产品推荐
相关产品推荐

