目录
开篇介绍
steamVR我们用HTC举例,同样的在官方样例中也是射线传送移动,我们都是先不赘述,只讲关键的移动,与PicoXR的摇杆移动有所不同,HTC的移动更像是圆盘移动
不过有所不同,也就有所相同,同样的这是一个Vector2值,分为x和y,且范围在[-1,1]
导入steamVR包和设置
1.首先我们要上Unity商店下载steamVR,是免费的,SteamVR Plugin
2.导入steamVR包,Window→Package Manager→Packages: My Assest→然后我们搜索一下steamvr下载导入一下
3.设置一下steamVR Input,Window→SteamVR Input,我们在Action加一个,取名为TeleportV2,类型设置成Vector2,最后保存一下,看不懂可以看视频哦
最后我们点击Open binding UI,将这个值放在手柄的圆盘上
注:圆盘为Teleport,方法可以先看一下其他大佬的,记得连接设备,还有要下载steamVR,在steam商店中,同样免费的
代码
最后我们写代码
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Valve.VR;//steamvr
public class Player : MonoBehaviour
{
Quaternion my_head;//头朝方向,也就是移动方向
void Start()
{
}
void Update()
{
SteamVR_Move();
}
public float speed=5;
public CharacterController character;
void SteamVR_Move()
{
my_head = Quaternion.Euler(0, Camera.main.transform.eulerAngles.y, 0);
Vector2 my_padPosition = SteamVR_Input.GetAction<SteamVR_Action_Vector2>("TeleportV2").axis;//获取自己定义的圆盘Vector2值
Vector3 dirction = my_head * new Vector3(my_padPosition.x, 0, my_padPosition.y);//类似xr的
//transform.position += dirction*Time.deltaTime*speed;//和上一期一样
character.SimpleMove(dirction * speed);
}
}
注:using Valve.VR; 一定要加的,关于steamVR的一些API介绍可以看一下其他大佬的