using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
/// <summary>
/// 手柄控制器脚本
/// </summary>
///
public enum HandleControllerShakeType
{
Defuse, //不震动
Trigger, //扳机键
Grip, //抓取键
Touch, //圆盘触摸
TouchPress, //圆盘按下
}
public class HandleControllerScripts : MonoBehaviour
{
//public static HandleControllerScripts ZhenDong;
SteamVR_TrackedObject trackdeObject; //控制器
public HandleControllerShakeType ShakeType = HandleControllerShakeType.Defuse;
public bool IsGetPress = false; //判断手柄是不是按下
internal bool GetPressDown(ulong trigger)
{
throw new NotImplementedException();
}
private void Awake()
{
trackdeObject = this.GetComponent<SteamVR_TrackedObject>(); //获取当前的控制器
}
// Use this for initialization
void Start()
{
}
// Update is called once per frame
void Update()
{
}
private void FixedUpdate()
{
var device = SteamVR_Controller.Input((int)trackdeObject.index); //获取设备指针,确定当前设备是左手还是右手
switch (ShakeType)
{
case HandleControllerShakeType.Trigger:
{
//==============扳机键======================
//按住扳机键
if (device.GetPress(SteamVR_Controller.ButtonMask.Trigger))
{
//var deviceIndex_L = SteamVR_Controller.GetDeviceIndex(SteamVR_Controller.DeviceRelation.Leftmost); //左手
//SteamVR_Controller.Input(deviceIndex_L).TriggerHapticPulse(500);
//var deviceIndex_R = SteamVR_Controller.GetDeviceIndex(SteamVR_Controller.DeviceRelation.Rightmost); //右手
//SteamVR_Controller.Input(deviceIndex_R).TriggerHapticPulse(500); //手柄震动
SteamVR_Controller.Input((int)device.index).TriggerHapticPulse(3000); //手柄震动
IsGetPress = true; //手柄震动键按下
}
//按下扳机键
if (device.GetPressDown(SteamVR_Controller.ButtonMask.Trigger))
{
SteamVR_Controller.Input((int)device.index).TriggerHapticPulse(3000); //手柄震动
IsGetPress = true; //手柄震动键按下
}
//松开扳机键
if (device.GetPressUp(SteamVR_Controller.ButtonMask.Trigger))
{
SteamVR_Controller.Input((int)device.index).TriggerHapticPulse(3000); //手柄震动
IsGetPress = false; //手柄震动键松开
}
}
break;
case HandleControllerShakeType.Touch:
{
//==========圆盘键触摸===============
//按住圆盘
if (device.GetTouch(SteamVR_Controller.ButtonMask.Touchpad))
{
SteamVR_Controller.Input((int)device.index).TriggerHapticPulse(500); //手柄震动
IsGetPress = true; //手柄震动键按下
}
//按下圆盘
if (device.GetTouchDown(SteamVR_Controller.ButtonMask.Touchpad))
{
SteamVR_Controller.Input((int)device.index).TriggerHapticPulse(3000); //手柄震动
IsGetPress = true; //手柄震动键按下
}
//松开圆盘
if (device.GetTouchUp(SteamVR_Controller.ButtonMask.Touchpad))
{
SteamVR_Controller.Input((int)device.index).TriggerHapticPulse(3000); //手柄震动
IsGetPress = false; //手柄震动键松开
}
}
break;
case HandleControllerShakeType.TouchPress:
{
//==========圆盘键按下===============
//按住圆盘
if (device.GetPress(SteamVR_Controller.ButtonMask.Touchpad))
{
SteamVR_Controller.Input((int)device.index).TriggerHapticPulse(500); //手柄震动
IsGetPress = true; //手柄震动键按下
}
//按下圆盘
if (device.GetPressDown(SteamVR_Controller.ButtonMask.Touchpad))
{
SteamVR_Controller.Input((int)device.index).TriggerHapticPulse(3000); //手柄震动
IsGetPress = true; //手柄震动键按下
}
//松开圆盘
if (device.GetPressUp(SteamVR_Controller.ButtonMask.Touchpad))
{
SteamVR_Controller.Input((int)device.index).TriggerHapticPulse(3000); //手柄震动
IsGetPress = false; //手柄震动键松开
}
}
break;
case HandleControllerShakeType.Grip:
{
//==========抓取键===============
//按住抓取键
if (device.GetPress(SteamVR_Controller.ButtonMask.Grip))
{
SteamVR_Controller.Input((int)device.index).TriggerHapticPulse(500); //手柄震动
IsGetPress = true; //手柄震动键按下
}
//按下抓取键
if (device.GetPressDown(SteamVR_Controller.ButtonMask.Grip))
{
SteamVR_Controller.Input((int)device.index).TriggerHapticPulse(3000); //手柄震动
IsGetPress = true; //手柄震动键按下
}
//松开抓取键
if (device.GetPressUp(SteamVR_Controller.ButtonMask.Grip))
{
SteamVR_Controller.Input((int)device.index).TriggerHapticPulse(3000); //手柄震动
IsGetPress = false; //手柄震动键松开
}
}
break;
default:
{
}
break;
}
}
}