Der SteamVR-Eingang wurde kürzlich vollständig geändert. Er verwendet jetzt Aktionen. Hier finden Sie eine schrittweise Anleitung vom Ventil zur Einrichtung.
Hier ist eine der (besten) Möglichkeiten, um es im Code abzufragen:
void Update(){
//NOTE: I could have used one-off events. But I used these constant Update() polls instead because if the VR Dashboard is on while the headset is taken off or put on,
//then the OnDown and OnUp events get eaten by the dashboard and will never reach this code in unity. (github issue here: https://github.com/ValveSoftware/openvr/issues/628)
// m_inputSourceDevice needs to be Any - there's no entry for "Headset", but the headset's sensors are reported under the Any "hand".
SteamVR_Input_Sources m_inputSourceDevice = SteamVR_Input_Sources.Any;
if(!m_isHeadsetOn && SteamVR_Input._default.inActions.Proximity_Sensor.GetState(m_inputSourceDevice)){
Debug.Log("Headset On.");
HeadsetOn();
}
else if(m_isHeadsetOn && !SteamVR_Input._default.inActions.Proximity_Sensor.GetState(m_inputSourceDevice)){
Debug.Log("Headset Off (cancellable)");
StartCoroutine(HeadsetOff());
}
}
Beachten Sie, dass es ab sofort einen Fehler gibt, der Sie daran hindert, SteamVR zu verwenden, um den Näherungssensor einer Aktion zuzuweisen, wenn Sie ein HTC Vive oder Vive Pro haben, obwohl es ironischerweise wie beabsichtigt funktioniert, wenn Sie es mit einem verwenden Oculus Headset. Auf dieser Seite mit Steamvr-Github-Problemen gibt es eine einfache Lösung .
Beachten Sie auch, dass OpenVR in der Regel das implementiert, was SteamVR bietet. Derzeit können Sie jedoch nicht auf den Näherungssensor zugreifen. Das einzige, was Sie mit OpenVR tun können, ist das zu überprüfen, EDeviceActivityLevel
wie MichaelHouse in seiner Antwort erklärt hat. Dies ist jedoch nutzlos, da die einzige Ebene, an der der Prox-Sensor beteiligt ist, die k_EDeviceActivityLevel_UserInteraction
Verbindung zwischen Prox und Kreisel ist. Laut OpenVR interagiert das Headset also für immer mit dem Benutzer, solange eine leichte Brise oder Vibration den Neigungssensor kippt Headset alle 10 Sekunden ein wenig.
[BEARBEITEN]
Einige Dinge wurden in der Zwischenzeit behoben. Zum Beispiel gibt es jetzt einen Eintrag für den Hmd anstelle von Any; und OpenVR hat einen XRDevice.userPresence-Wert (obwohl dies möglicherweise nicht explizit der Näherungssensor ist).