接上一章,Cave空间的功能基本上实现了,我们项目中用到了动捕设备来控制,所以涉及到与unity通信,我们采用了VRPN进行通信。
我们的unity端相当于客户端,与动捕设备建立通信,将动捕的移动和旋转值传到unity里控制相机的移动与旋转。
通过测试,观察动捕设备的移动和旋转方向是否与unity中相机的相反,如果相反,在InvertAxis中对应的轴后打对勾。
如果需要通过XBox手柄控制角色移动与旋转,那只要控制整体移动与旋转就可以。下面是自己写的移动旋转脚本,可以参考,可以换别的写法也可以。
void FixedUpdate()
{
#region 移动 旋转
float lh = Input.GetAxis(XBox.LeftStickHorizontal);
float lv = Input.GetAxis(XBox.LeftStickVertical);
float rh = Input.GetAxis(XBox.RightStickHorizontal);
float rv = Input.GetAxis(XBox.RightStickVertical);
movement = head.forward* lv;
movement += head.right * lh;
movement.Normalize();
movement *= runSpeed;
movement.y = 0f;
if (rh != 0 || rv != 0)
{
transform.Rotate(Vector3.up, -rh * rotateSpeed);
}
rigidbody.velocity = new Vector3(movement.x, rigidbody.velocity.y, movement.z) + Vector3.up * Height;
//Debug.Log(rigidbody.velocity);
Height = 0f;//初始化跳跃高度
#endregion
}
VRPN插件也上传了,如果有需要可以去下载。
路径:https://download.csdn.net/download/sxwwc/89005875