昨天很開心的給大家看我可以用鍵盤和滑鼠移動視角跟位置就結束了呢,今天來稍微講講我的心得吧(?。
因為我想用Unity做有關VR的遊戲,我也知道在VR頭盔裡的顯示,跟在一般這樣平面的螢幕顯示,感覺上是不同的,還有用手部控制器操控,跟用鍵盤操控也不太一樣,所以呢就想到說可以用VR模擬器。
不過呢,不知道是我的設定有問題,還是真的有Bug,總之使用模擬器大失敗呢。
不知道有沒有人想到,如果我用模擬器的結果,還是用鍵盤以及平面螢幕顯示的話,那為什麼還要用模擬器呢?
這是我在搜索解法中冒出來的問題,我的答案是:辛辛苦苦用模擬器去把鍵盤跟滑鼠的行為仿造成頭盔跟手部控制器,就是為了在有頭盔跟控制器時,可以無縫接軌啊!!
阿理論上是這樣沒錯啦,不過現在的現實就是沒辦法呢(哭),所以昨天才決定試著直接操作鍵盤滑鼠,而不是定義好虛擬的頭盔與手部控制器後,然後再把鍵盤與滑鼠的輸入訊號接過去。
就看到一些人回覆說可以試著改Edit > Project Settings > Player > Configuration > Active Input Handling
成Input System Package(New)
或Both
。
顧名思義啊,Input就是你敲打鍵盤或滑鼠、控制器等等所產生的Input訊號,而Unity有推出了新的Input管理Package,但同時也保留了舊的Input管理方式,所以才會提供你選擇的機會,單用Old、New、或兩者都用。
那我使用的XR interaction toolkit,他的Input設定,是使用Input System Package製成的,也就是新版的Input管理。
雙擊那個有藍色閃電的三折頁檔案,就會跳出3.這個視窗,這邊就會顯示你的Input設定是BlahBlah的。
而如果你想用新版Input package自製,可以點擊4.Input Action
,就會新增一個藍色閃電的三折頁檔案。
我前幾天在操作時,會出現下面這個警告的原因也是因為,我的Project在有使用了新版Input package的情況下,Player
那裡的設定還是維持Old的關係。
我昨天那個,直接操作鍵盤與滑鼠控制的程式碼呢,則是使用舊版Input管理,就是用UnityEngine.Input
的Method去實現的。
像FlyCamera.cs裡面的Input.GetMouseButton(1)
,就是在說:如果(滑鼠右鍵一直按著的話){就...}。
//FlyCamera.cs
using UnityEngine;
using System.Collections;
public class FlyCamera : MonoBehaviour {
void Update () {
if (Input.GetMouseButton(1)) { // 0 左鍵, 1 右鍵, 2 滾輪
...
}
}
}
雖然還是不知道Bug出在哪,但至少我搞懂了一件事~