VR模拟枪支打靶,消灭鬼怪,换弹以及上弦等等硬核枪支操作。 使用HTCVive设备,开启SteamVR进行游玩。
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

130 lines
4.5 KiB

3 years ago
//========= Copyright 2016-2018, HTC Corporation. All rights reserved. ===========
using UnityEngine;
using HTC.UnityPlugin.Vive;
#if UNITY_2017_2_OR_NEWER
using UnityEngine.XR;
#else
using XRSettings = UnityEngine.VR.VRSettings;
using XRDevice = UnityEngine.VR.VRDevice;
#endif
namespace HTC.UnityPlugin.VRModuleManagement
{
public sealed partial class UnityEngineVRModule : VRModule.ModuleBase
{
public static class ButtonKeyCode
{
private static KeyCode[] s_codes = new KeyCode[]
{
KeyCode.JoystickButton0,
KeyCode.JoystickButton2,
KeyCode.JoystickButton10,
KeyCode.JoystickButton12,
KeyCode.JoystickButton9,
KeyCode.JoystickButton8,
KeyCode.JoystickButton17,
KeyCode.JoystickButton16,
KeyCode.JoystickButton1,
KeyCode.JoystickButton3,
KeyCode.JoystickButton11,
KeyCode.JoystickButton13,
KeyCode.JoystickButton15,
KeyCode.JoystickButton14,
};
public static int Count = s_codes.Length;
public static KeyCode RMenuPress = s_codes[0];
public static KeyCode LMenuPress = s_codes[1];
public static KeyCode RMenuTouch = s_codes[2];
public static KeyCode LMenuTouch = s_codes[3];
public static KeyCode RPadPress = s_codes[4];
public static KeyCode LPadPress = s_codes[5];
public static KeyCode RPadTouch = s_codes[6];
public static KeyCode LPadTouch = s_codes[7];
public static KeyCode RAKeyPress = s_codes[8];
public static KeyCode LAKeyPress = s_codes[9];
public static KeyCode RAKeyTouch = s_codes[10];
public static KeyCode LAKeyTouch = s_codes[11];
public static KeyCode RTriggerTouch = s_codes[12];
public static KeyCode LTriggerTouch = s_codes[13];
public static KeyCode Index(int i) { return s_codes[i]; }
}
public static class ButtonAxisName
{
private static readonly string[] s_names = new string[]
{
"HTC_VIU_LeftTrackpadHorizontal",
"HTC_VIU_LeftTrackpadVertical",
"HTC_VIU_RightTrackpadHorizontal",
"HTC_VIU_RightTrackpadVertical",
"HTC_VIU_LeftTrigger",
"HTC_VIU_RightTrigger",
"HTC_VIU_LeftGrip",
"HTC_VIU_RightGrip",
};
public static int Count = s_names.Length;
public static string LPadX = s_names[0];
public static string LPadY = s_names[1];
public static string RPadX = s_names[2];
public static string RPadY = s_names[3];
public static string LTrigger = s_names[4];
public static string RTrigger = s_names[5];
public static string LGrip = s_names[6];
public static string RGrip = s_names[7];
public static string Index(int i) { return s_names[i]; }
}
#if UNITY_EDITOR
public static class ButtonAxisID
{
private static readonly int[] s_ids = new int[]
{
0,
1,
3,
4,
8,
9,
10,
11,
};
public static int Count = s_ids.Length;
public static int LPadX = s_ids[0];
public static int LPadY = s_ids[1];
public static int RPadX = s_ids[2];
public static int RPadY = s_ids[3];
public static int LTrigger = s_ids[4];
public static int RTrigger = s_ids[5];
public static int LGtip = s_ids[6];
public static int RGtip = s_ids[7];
public static int Index(int i) { return s_ids[i]; }
}
#endif
public override bool ShouldActiveModule() { return VIUSettings.activateUnityNativeVRModule && XRSettings.enabled; }
public override void Update()
{
// set physics update rate to vr render rate
if (VRModule.lockPhysicsUpdateRateToRenderFrequency && Time.timeScale > 0.0f)
{
// FIXME: VRDevice.refreshRate returns zero in Unity 5.6.0 or older version
#if UNITY_5_6_OR_NEWER
Time.fixedDeltaTime = 1f / XRDevice.refreshRate;
#else
Time.fixedDeltaTime = 1f / 90f;
#endif
}
}
}
}