VR初始化
SteamVR_Input类可以静态引用每个动作和动作集,在每个动作集中,可以找到其包含的动作的引用。
public SteamVR_Input_Sources source = SteamVR_Input_Sources.Any; //获取VR控制器发出的动作
SteamVR 2.0将动作抽象为以下6种类型,简介如下:
- Boolean类型的动作代表只有两种状态的动作——True或False,比如抓取(Grab)动作,只有抓取或未抓取两种状态,不存在中间状态。在Unity中对应类为SteamVR_Action_Boolean。
public SteamVR_Action_Boolean spawn; //用来判断VR控制器做出的选择是否正确
-
Single类型的动作能够返回0~1之间的数值,比如 Trigger 键按下到松开的过程。在Unity中对应类为SteamVR_Action_Single。
-
Vector2类型动作能够返回二维数,比如Touchpad上的触摸或手柄摇杆。使用这样的数值能够控制物体在四个方向的运动,典型的应用时使用Touchpad控制无人机或小车的运动。在Unity中对应类为SteamVR_Action_Vector2。
-
Vector3类型的动作能够返回三维数值,在Unity中对应类为SteamVR_Action_Vector3。
-
Pose类型的动作表示三维空间中的位置和旋转,一般用于跟踪VR控制器。在Unity中对应类为SteamVR_Action_Pose。
-
Skeleton类型的动作能够获取用户在持握手柄控制器时的手指关节数据,通过返回数据,结合手部渲染模型,能够更加真实的呈现手部在虚拟世界的姿态,虽然不及像LeapMotion等设备获取手指输入那样精确,但是足以获得良好的沉浸感。在Unity中对应类为SteamVR_Action_Skeleton。
SteamVR_Behavior_Pose来获取控制器的位置和旋转
private SteamVR_Behaviour_Pose trackedObj; //获取VR控制器的位置和旋转
SteamVR_RenderModel来显示控制器的3d模型,该模型将通过按键来动画
声音初始化
AudioSource
AudioSource 是 Unity 中的 Audio 组件,其主要用来播放游戏场景中的 AudioClip,AudioClip 就是导入到 Unity 中的声音文件。Unity 可导入的音频文件格式有 .aif,.wav,.mp3和.ogg。此外,Audio Source 还可以设置一些播放声音的效果,增强游戏场景中的声音效果。
public AudioSource audio; //播放声音
private AudioClip startSound; //开场音乐
private AudioClip selectDirSound; //选择时的音乐
private AudioClip wrongSound; //出错音乐
private AudioClip achieveSound; //成功音乐
其他初始化
private TrainingRecord record; //训练记录
private SceneTask sceneTask; //场景任务
private ArrayList task; //任务列表,ArrayList:引入命名空间: using System.Collections
private int taskIndex; //任务索引
private Vector3[] walkablePoints; //三维数组,表示空间点
private float[][] W;
private ArrayList screenTips; //场景提示
private int screenTipsIndex; //场景提示索引
private ArrayList soundTips; //声音提示
private NavMeshAgent p; //实现点击任意点寻路
private bool createArrow; //寻路箭头
private bool showScreenTip; //场景显示提示
private Transform camera; //任何一个GameObject身上都有Transform组件,它包含了该GameObject的位置(position),方向(rotate),大小(scale)。如果希望在游戏中更 新玩家位置、设置相机观察角度,都免不了要和Transform组件打交道。
private Ray ray; //射线是在三维世界中从一个点沿一个方向发射的一条无限长的线。在射线的轨迹上,一旦与添加了碰撞器的模型发生碰撞,将停止发射。我们可以利用射线实现子弹击中目标的检测,鼠标点击拾取物体等功能。
private RaycastHit hit; //射线碰撞
private bool isRayCast; //判断光线投射
private int playerPoint; //当前位置
private int nextPoint; //下一步位置
private bool walking; //判断是否行走
private bool rehearse; //
private float threeSecondsTimer;
private Vector3 playerOriginalPosition; //用户初始位置
private Vector3 playerballOriginalPosition; //
ArrayList
SceneTaskDictionary
函数
唤醒函数、开始函数、更新函数
Awake()、Start()、Update()<