我们正在为研究生院创建一款游戏。我正在 VR 上 Unity 制作一款飞行射击游戏。
问题在于将玩家(飞机)位置重置为当前玩家的真实位置。
目前,我的玩家对象的结构是...
Player
> XR Origin
> Camera Offset
> VR Camera
> controllers.. etc
> Aircraft Model
我尝试重置位置。
但是很多教程都不是飞行游戏,并且大多数教程都是重新居中准备好的变换的位置。
我想回到当前玩家的真实位置(在 VR 中)。
我知道可以在虚拟现实的内置功能中重新定位。 但我想在统一运行时重新定位。
有人有解决办法吗?或者是否有任何方法可以在运行时调用以使用 vr 的内置函数重新调整位置?
我使用Unity 2022.2.19f、OpenXR包、Oculus Quest 2(我不像OVR那样直接使用Oculus SDK...)
抱歉我的英语水平很差..因为我是韩国人..:<
主相机 --> 头部
XR 原点 --> 原点
中心位置所需的对象 --> 目标
public class ReCenterXROrigin : MonoBehaviour
{
public Transform head;
public Transform origin;
public Transform target;
private Vector3 offset;
private Vector3 targetForward;
private Vector3 cameraForward;
private float angle;
private void Start()
{
Recenter();
}
public void Recenter()
{
offset = head.position - origin.position;
offset.y = 0;
origin.position = target.position + offset;
targetForward = target.forward;
targetForward.y = 0;
cameraForward = head.forward;
cameraForward.y = 0;
angle = Vector3.SignedAngle(cameraForward, targetForward, Vector3.up);
origin.RotateAround(head.position, Vector3.up, angle);
}
}
我想加入对话。我有一个类似的问题。我的 Oculus Quest 2 将我的位置存储在我们的世界中,并根据我真实房间中的位置生成角色。但我希望 Quest 2 在 XR 原点的位置生成玩家。