在 XR Interaction Toolkit 中,有一个 Locomotion System、添加后悔有自带的三个脚本,其中Snap Turn Provider就是瞬间转向、
持续转向和持续移动
持续转向和瞬间转向的按键参考是一样的,有手柄的遥感绑定的snap turn
持续移动绑定的是左手柄的 move移动
注:只要有 Locomotion System 和 Snap Turn Provider
这两个脚本就能实现瞬间转向,脚本挂载在任意游戏物体上都是可以的。
因为 XR Origin 这个游戏物体代表了 VR 中的玩家自己,所以我们要在这个物体上添加 Character Controller 组件,然后调整一下 Center Y 和 Radius 的值
在 Locomotion System 游戏物体上添加下面脚本
玩家的模型部分加上碰撞器 Character Controller Driver(原生的碰撞器Character Controller不会根据头显位置变化高度)、把 Continuous Move Provider 这个脚本(本教程中是 Locomotion System 这个物体)拖到 Locomotion Provider 这个变量上:这种方式默认只有在移动的时候会检测高度并更新高度、所以需要新建一个脚本,继承他
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.XR.Interaction.Toolkit;
/**
* CustomCharacterControllerDriver 类,继承自 CharacterControllerDriver
*/
public class CustomCharacterControllerDriver : CharacterControllerDriver
{
/**
* 每帧更新时调用的方法
*/
void Update()
{
// 调用自定义的更新角色控制器的方法
UpdateCharacterController();
}
}
然后使用我们自己写的脚本进行控制,移除Character Controller 和Character Controller Driver