香港新手遊戲開發者論壇

 找回密碼
 立即註冊
查看: 2247|回復: 0

[原創] 不使用 Cardboard SDK 下的替代方案

[複製鏈接]

63

主題

67

帖子

83 小時

在線時間

管理員

Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9

積分
453
發表於 2017-3-11 16:54:43 | 顯示全部樓層 |閱讀模式

馬上註冊,結交更多好友,享用更多功能,讓你輕鬆玩轉社區。

您需要 登錄 才可以下載或查看,沒有帳號?立即註冊

x
想製作手機VR遊戲, Google 提供一個非常便宜的方案, 就是一部普通的手機(需要有陀螺儀), 加一個用紙板做的 Cardboard 眼鏡就可以了.
不過實際開發時就發現, 新版本的 Cardboard SDK for unity 並不支援舊版本的Android系統, 而舊版本的 Cardboard SDK 卻有其他問題(我的情況是閃退).
這是因為該手機不支援 Cardboard 嗎? 非也, 因為它可以安裝 Google 的 Cardboard demo程式並成功運行.
既然那手機已經具備VR所需的硬件, 那不如...... 自己弄個VR系統!

具體要做的事有兩個:
1. 令畫面能夠與手機的陀螺儀同步旋轉
2. 將畫面分成左右兩邊

1. 令畫面能夠與手機的陀螺儀同步旋轉
重點是以Input.gyro.attitude來取得旋轉數據, 不過直接換成遊戲中的鏡頭旋轉角度的話, 會發現畫面的確會轉, 但卻天南地北, 位置和方向都錯了.
因為手機的陀螺儀軸和Unity中的旋轉軸是不一樣的, 所以我以 trial and error 的方法找出軸的起始位置和旋轉方向, 並加以修正, 最後就變成這樣:
開一個新的Parent GameObject做容器, 並將Rotation設為(90, 0 0), Child Object就是用以下的Script令它會跟著手機旋轉. 注意我使用了localRotation及將原始的陀螺儀XY數據反轉使用.

  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;

  4. public class NewBehaviourScriptVR : MonoBehaviour {

  5.         // Use this for initialization
  6.         void Start () {
  7.                 Input.gyro.enabled = true;
  8.         }
  9.         
  10.         // Update is called once per frame
  11.         void Update () {
  12.                 transform.localRotation = Quaternion.Euler (-Input.gyro.attitude.eulerAngles.x, -Input.gyro.attitude.eulerAngles.y, Input.gyro.attitude.eulerAngles.z);
  13.         }
  14. }
複製代碼
使用 unity remote 5 讀取手機陀螺儀數據至 unity editor

PS: [Parent Object Rotation 90度 + Child Object localRotation = attitude] 只是其中一種做法, 各位可按自己喜好及需要使用陀螺儀數據Input.gyro.attitude來做自己的VR系統~

2. 將畫面分成左右兩邊
首先將上面的鏡頭和旋轉Script分開, 旋轉Script保留在原先的GameObject, 在該GameObject內再開一個 Child Object, 把鏡頭相關的Script放入去, 並把整個鏡頭Object複製多一份, 形成旋轉Object是頭,兩個鏡頭Object是雙眼的結構

之後再把左右鏡頭設置成這樣

主要是把左右鏡頭設置到一左一右的Position, 和把主畫面透過Viewport Rect設置到螢幕的左右兩邊.
最後就會變成這樣, 可以在螢幕中央隱約看到一條線, 因為左右兩邊已經是獨立畫面, 所以分界的地方當然會看到不協調




最後, 在Unity5.6推出後或許不再需要這種方法了, 因為Unity5.6將原生支援Cardboard, 即是不再需要安裝Cardboard SDK也能做Cardboard VR遊戲, 相容性會大大提高, 目標亦正正是希望更多低版本的Android系統手機能夠用Unity開發Cardboard APP~

個人簽名
您需要登錄後才可以回帖 登錄 | 立即註冊

本版積分規則

手機版|Archiver|植物油氣

GMT+8, 2024-9-20 06:51 AM , Processed in 0.053982 second(s), 21 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回復 返回頂部 返回列表