- Home /
Not getting input from HTC Vive controllers
I'm working on coding a gun for an FPS for the HTC Vive, but I'm having trouble getting input. Two days ago I coded the gun and it worked just fine, but the next day it wasn't getting input at all. I've tried getting input from other buttons, checking for firmware updates, updating Unity, updating the SteamVR Plugin, rebooting the computer, running a built version of the game, and even copying the code into a new project. The gun still ignores all input. Other Unity games on Steam still work just fine, as well as the SteamVR examples that come with the plugin, but my game doesn't.
Here's the script for the gun, which is attached to a gun mesh parented to the controller.
using UnityEngine;
using System.Collections;
public class GunShooting : MonoBehaviour
{
public GameObject Shot;
public float ShotDelay;
float Timer;
void Update()
{
Timer += Time.deltaTime;
if (Timer >= ShotDelay)
{
bool IsFiring = SteamVR_Controller.Input(0).GetTouchDown(SteamVR_Controller.ButtonMask.Trigger);
if (IsFiring)
{
Instantiate(Shot, transform.position, transform.rotation);
Timer = 0;
}
}
}
}
Can anyone tell me what I'm doing wrong? I've compared this to the examples and people here on Unity Answers explaining how to do this and I don't see any problems with my code.
Answer by Hellium · Nov 12, 2016 at 09:36 AM
What have you tried so far ? Where does the problem comes from ?
You problem may come from the fact you force the index of the controller to be 0. However, it's not always the case.
Here is the code I use to work with controllers :
private SteamVR_TrackedObject trackedObject;
private SteamVR_Controller.Device controllerDevice
{
get
{
if( trackedObject == null )
trackedObject = GetComponent<SteamVR_TrackedObject>();
return (trackedObject == null) ? null : SteamVR_Controller.Input( (int) trackedObject.index );
}
}
Then, in your code :
SteamVR_Controller.Device device = controllerDevice ;
bool IsFiring = (device == null) ? false : controllerDevice.GetTouchDown(SteamVR_Controller.ButtonMask.Trigger);
Answer by dariony · Dec 27, 2017 at 05:48 PM
You may want to consider using the Vive Input Utility as it's easier to use as it's role based (manages device ids for you)
if (ViveInput.GetPressDown (HandRole.RightHand, ControllerButton.Trigger)) { ...
Your answer
Follow this Question
Related Questions
SteamVR and Unity input systems conflict 0 Answers
Can SteamVR trigger simulate Fire1? 1 Answer
XRRayInteractor Offset Ray Direction 0 Answers
How to map input for new Samsung Gear VR controller? 3 Answers