Unity3D+VR的实现

简介:

针对CardBoard一类的眼镜用Unity3D开发VR内容。

1、创建VRCamera:
使用Dive插件,从DiveUnityDemo提取摄像机和有关的脚本并export出来。

2、对象选择:
视选模式:从眼睛发射一条射线,选择看到的对象。
手柄模式:蓝牙手柄上的按键来选择对象。

3、视选模式的实现:
视选:使用Raycast检测,RaycastHit返回碰撞到的物体信息。
private RaycastHit rayHitInfo;
public Transform goPoint;//为射线发出点,是两个摄像机中间的一个点。
if (Physics.Raycast(goPoint.position, goPoint.forward, out rayHitInfo))
{
Debug.Log("RaySelect: " + rayHitInfo.collider.gameObject.name);
}
焦点:新建一个Plane,和Point放在同一个局部坐标系下,然后调整transform,使其放到视野中间,去选Mesh collider。
给焦点开发动画效果:Texture循环播放。
给视选设置一个停留时间:不是说看到某个物体就触发,而是盯着某个物体一定时间才触发。

4、手柄模式的实现:
检测手柄是否存在:
if ((Input.GetJoystickNames().Length > 0) && (!Input.GetJoystickNames()[0].Equals("")))
{
//手柄存在
}
void Start () 
{
InvokeRepeating("detect", 0, 5);//每隔5s调用一次detect函数,做检测手柄动作。
}
检测手柄按键:
if (Input.GetKeyDown(KeyCode.Joystick1Button0))
{
//手柄键1
}
else if (Input.GetKeyDown(KeyCode.Joystick1Button1))
{
//手柄键2
}
//以此类推
设置并检测手柄摇杆:
设置摇杆通过在input里面增加axis的手柄,4个方向,要新增设置四个。
检测摇杆:
if (Input.GetAxis("AxisName"))
{
//摇杆的一个方向
}



本文转自 宁金峰 51CTO博客,原文链接:http://blog.51cto.com/13243523/2046415,如需转载请自行联系原作者

相关文章
VR播放器
本文研究全球及中国市场VR播放器现状及未来发展趋势,侧重分析全球及中国市场的主要企业,同时对比北美、欧洲、中国、日本、东南亚和印度等地区的现状及未来发展趋势
Unity3D+VR的实现
针对CardBoard一类的眼镜用Unity3D开发VR内容。 1、创建VRCamera:使用Dive插件,从DiveUnityDemo提取摄像机和有关的脚本并export出来。 2、对象选择:视选模式:从眼睛发射一条射线,选择看到的对象。
1997 0
|
vr&ar 图形学 开发者
VR这么火,你选UE4还是Unity 3D?
在虚拟现实大热的今天,开发者界也出现了“甜豆花”与“咸豆花”之争。在游戏开发者制作游戏时,面对都是免费、都支持各大平台的UE4和Unity 3D,选择何种游戏引擎,似乎有点难以抉择,左手UE4,右手Unity 3D。
4075 1