【虛擬現實】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"))
{
//搖桿的一個方向
}