using UnityEngine;
using System.Collections;
public class WaterFarAndNearCtr : MonoBehaviour {
//手柄
SteamVR_TrackedObject trackdeObjec;
public float waterPower;
public float maxWaterPower;
private float timer;
public GameObject waterEffect; // 水的粒子特效
private float lastPowerFloat;
private float currentPowerFloat;
private float triggerPower;
private SteamVR_Controller.Device device;
void Awake()
{
//获取手柄上的这个组件
// trackdeObjec = GetComponent<SteamVR_TrackedObject>();
}
// Use this for initialization
void Start () {
maxWaterPower = 3f;
}
// Update is called once per frame
void Update () {
if (gameObject.GetComponentInParent<SteamVR_TrackedObject>()!=null)
{
var index = gameObject.GetComponentInParent<SteamVR_TrackedObject>().index;
device = SteamVR_Controller.Input((int)index);
}
if (device!= null && device.GetTouch(SteamVR_Controller.ButtonMask.Trigger))
{
if (device.GetAxis(Valve.VR.EVRButtonId.k_EButton_SteamVR_Trigger).x>0.2f) // 扳机键的力度大小控制
{
waterEffect.GetComponent<ParticleSystem>().maxParticles = 1000;
waterPower = 0.5f; // 当力度大于0.2时 触发 水枪的1档
}
}
if (device!=null&& device.GetPress(SteamVR_Controller.ButtonMask.Trigger))
{
waterEffect.GetComponent<ParticleSystem>().maxParticles = 3000;
triggerPower = device.GetAxis(Valve.VR.EVRButtonId.k_EButton_SteamVR_Trigger).x;
if (triggerPower>0f)
{
if ( triggerPower>=0.6f && triggerPower<=0.8f)
{
waterPower = 1f; // 水枪的2档
}
if (triggerPower>0.8f&& triggerPower<=1f)
{
waterPower = 1.5f; // 水枪的3 档;
}
}
}
if (device != null&&device.GetTouchUp(SteamVR_Controller.ButtonMask.Trigger))
{
waterEffect.GetComponent<ParticleSystem>().maxParticles = 0;
waterPower = 0f;
}
}
private void LateUpdate()
{
if (waterEffect)
{
waterEffect.GetComponent<ParticleSystem>().startSpeed = 2f+ waterPower;
}
}
}
总结:device.GetAxis(Valve.VR.EVRButtonId.k_EButton_SteamVR_Trigger).x // 获取trigger键的力度的大小;