嗨,我们(我和我的学生)正在Unity中使用MRTK来构建简单的VR游戏。
我们正在尝试让xBox控制器移动播放器(或以MRTK的方式,我认为是将场景固定在固定为0、0、0的摄像头周围移动)。
我已经设置好控制器并使用MRTK设置进行游戏,但是没有运气。
我的控制器可以在Windows Mixed Reality Portal中正常运行,但是在游戏加载时就会消失。
希望对MRTK编辑器窗口中的确切步骤/设置提供任何帮助。
本
答案 0 :(得分:1)
这里有两件事要解决:
MixedRealityPlayspace.Transform.Translate
您可以使用以下代码通过游戏手柄移动MR Playspace:
using Microsoft.MixedReality.Toolkit;
using Microsoft.MixedReality.Toolkit.Input;
using Microsoft.MixedReality.Toolkit.Utilities;
using UnityEngine;
/// <summary>
/// Moves the player around the world using the gamepad, or any other input action that supports 2D axis.
///
/// We extend InputSystemGlobalHandlerListener because we always want to listen for the gamepad joystick position
/// We implement InputHandler<Vector2> interface in order to receive the 2D navigation action events.
/// </summary>
public class MRPlayspaceMover : InputSystemGlobalHandlerListener, IMixedRealityInputHandler<Vector2>
{
public MixedRealityInputAction navigationAction;
public float multiplier = 5f;
private Vector3 delta = Vector3.zero;
public void OnInputChanged(InputEventData<Vector2> eventData)
{
float horiz = eventData.InputData.x;
float vert = eventData.InputData.y;
if (eventData.MixedRealityInputAction == navigationAction)
{
delta = CameraCache.Main.transform.TransformDirection(new Vector3(horiz, 0, vert) * multiplier);
}
}
public void Update()
{
if (delta.sqrMagnitude > 0.01f)
{
MixedRealityPlayspace.Transform.Translate(delta);
}
}
protected override void RegisterHandlers()
{
CoreServices.InputSystem.RegisterHandler<MRPlayspaceMover>(this);
}
protected override void UnregisterHandlers()
{
CoreServices.InputSystem.UnregisterHandler<MRPlayspaceMover>(this);
}
}
我使用了以下控制器映射,以使dpad和指尖钩与导航操作挂钩:
然后,我创建了一个新的游戏对象,附加了MRPlayspaceMover脚本,并分配了“导航操作”字段: