Pico sdk匯入以及環境搭建等前期步驟這里不進行敘述
一、功能說明
當前功能是使用pico的手柄搖桿滑動實作搖桿控制主角進行移動,是平移,不是射線傳送瞬移,不過我個人認為這種方式在VR頭顯里面太暈了,
二、功能實作
1、前期準備
unity版本為2019.4.19,picosdk版本為PicoVR Unity SDK v2.8.11,unity編輯器和picosdk的獲取比較簡單,可以直接去官網下載即可
2、添加預制體和組件接入pico
在PicoMobileSDK檔案下的Pvr_UnitySDK和Pvr_Controller檔案里面,添加相應預制體到Hierarchy里面,如圖所示:

加入預制體之后,為Pvr_UnitySDK物體添加Capsule Collider碰撞體和Rigidbody剛體,同時剛體組件禁用xyz三個方向的旋轉,代碼里面實際控制移動的邏輯沒有使用到剛體,但是需要有剛體組件,這里剛體組件的作用是為了防止主角懸慷訓穿模
3、最重要的一步
新建腳本PicoControllerDemo放在空物體PicoControllerDemo上,腳本內容如下圖所示:
using UnityEngine;
using Pvr_UnitySDKAPI;
public class PicoControllerDemo : MonoBehaviour
{
public Transform player; //主角
public Transform dic; //頭顯正方向
public float speed;
private void Update()
{
//判斷控制器是否連接可以使用
if (Controller.UPvr_GetControllerState(0) == ControllerState.Connected)
{
//獲取觸摸位置
Vector2 touchPosition = Controller.UPvr_GetAxis2D(0);
float angle = VectorAngle(new Vector2(1, 0), touchPosition);
//上
if (angle > 45 && angle < 135)
{
player.Translate(dic.forward * Time.deltaTime * speed);
}
//下
else if (angle < -45 && angle > -135)
{
//Debug.Log("上");
player.Translate(-dic.forward * Time.deltaTime * speed);
}
//左
else if ((angle < 180 && angle > 135) || (angle < -135 && angle > -180))
{
//Debug.Log("左");
player.Translate(-dic.right * Time.deltaTime * speed);
}
//右
else if ((angle > 0 && angle < 45) || (angle > -45 && angle < 0))
{
//Debug.Log("右");
player.Translate(dic.right * Time.deltaTime * speed);
}
Debug.Log("觸摸點位置" + touchPosition);
}
else
{
return;
}
if (Input.GetKeyDown(KeyCode.Joystick1Button0))
{
// Debug.Log("頭顯確定鍵被按下");
}
}
/// <summary>
/// 根據在圓盤按下的位置,回傳一個角度值
/// </summary>
/// <param name="from"></param>
/// <param name="to"></param>
/// <returns></returns>
float VectorAngle(Vector2 from,Vector2 to)
{
float angle;
Vector3 cross = Vector3.Cross(from, to);
angle = Vector2.Angle(from, to);
return cross.z > 0 ? angle : -angle;
}
}
PicoControllerDemo里面有三個引數需要賦值,第一個引數是主角,第二個是頭顯正方向,該變數使用主角Pvr_UnitySDK下面Head子物體,第三個是移動速度,速度推薦使用5比較合理
4、最后一步
打包apk在Pico設備里面進行測驗
附帶工程源檔案
點這里
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/337739.html
標籤:其他
上一篇:Android ArchTaskExecutor快速執行緒切換
下一篇:View的幾個小工具
