VR康复训练之空间认知部分(Unity/VR/C#)

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()<

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值