- Home /
VR: get controller velocity
Hey there,
I am currently loosing my mind about something that I thought would be super simple. I want to get the velocity vector (or position vector) of my Oculus Quest 2 controller so I can use it in my code. Currently I am trying to do this with XRNodeStates (https://docs.unity3d.com/ScriptReference/XR.XRNodeState.TryGetVelocity.html). However I just can't figure out a way how to make it work - I am a complete beginner sorry.
What would the code be for this? If you could help me out that would be great!
All the best, Yves
Answer by Reflekst · Apr 26 at 09:59 AM
Hey, It works for me. I found it there: https://www.reddit.com/r/learnVRdev/comments/n5e8tm/how_to_use_controller_velocity_in_unity_xr/
using UnityEngine;
using UnityEngine.XR;
using UnityEngine.XR.Interaction.Toolkit;
public class ControllerVelocity : MonoBehaviour {
InputDevice LeftControllerDevice;
InputDevice RightControllerDevice;
Vector3 LeftControllerVelocity;
Vector3 RightControllerVelocity;
void Start()
{
LeftControllerDevice = InputDevices.GetDeviceAtXRNode(XRNode.LeftHand);
RightControllerDevice = InputDevices.GetDeviceAtXRNode(XRNode.RightHand);
}
void Update()
{
UpdateInput();
}
UpdateInput()
{
LeftControllerDevice.TryGetFeatureValue(CommonUsages.deviceVelocity, out LeftControllerVelocity);
RightControllerDevice.TryGetFeatureValue(CommonUsages.deviceVelocity, out RightControllerVelocity);
}
}
Your answer
