Forum Discussion
unpredictableBo
9 years agoHonored Guest
GearVR detect wheather the controller has been rotated left or right
I'm trying to rotate my car with Gear VR controller to left and right. I've somehow found that the rotations are from Y-axis are b/w 270-360 & 0-90 with enough play testing(Debugging). But, I'm sure it's ugly code.
**Question**
How can I get the rotation values and how do I map them b/w (1)-(0)-(-1) so I can assign them to my `CarController`.
**Logic I've implemented** [![Image][1]][1]
I'm converted values 270 to 359 in 0 to -90 than dividing them by -90 to map them from 0 to -1
private CarController m_car;
// Use this for initialization
void Start () {
m_car = GetComponent<CarController>();
}
// Update is called once per frame
void FixedUpdate () {
OVRInput.FixedUpdate();
float angle = 0;
if (((OVRInput.GetLocalControllerRotation(OVRInput.Controller.RTrackedRemote).eulerAngles.y >= 270 &&
OVRInput.GetLocalControllerRotation(OVRInput.Controller.RTrackedRemote).eulerAngles.y <= 359)) ||
((OVRInput.GetLocalControllerRotation(OVRInput.Controller.RTrackedRemote).eulerAngles.y <= 90 &&
OVRInput.GetLocalControllerRotation(OVRInput.Controller.RTrackedRemote).eulerAngles.y >= 0)))
{
float rotationValue = OVRInput.GetLocalControllerRotation(OVRInput.Controller.RTrackedRemote).eulerAngles.y;
// if the value is 3 digit than subtract it from 360 and make it negative
if (Mathf.Floor(Mathf.Log10(rotationValue) + 1) == 3)
{
rotationValue -= 360f;
}
rotationValue /= 90f;
angle = rotationValue;
}
float torque = 0;
if (OVRInput.Get(OVRInput.Button.One))
{
torque = -1;
}
if (OVRInput.Get(OVRInput.Button.PrimaryIndexTrigger))
{
torque = 1;
}
m_car.Move(angle, torque, torque, 0f);
}
}
> BUG: It works right sometimes but it doesn't work sometimes. Sometimes I get different angles & car movement looks buggy(only moves right). So my logic fails
**Question**
How can I get the rotation values and how do I map them b/w (1)-(0)-(-1) so I can assign them to my `CarController`.
**Logic I've implemented** [![Image][1]][1]
I'm converted values 270 to 359 in 0 to -90 than dividing them by -90 to map them from 0 to -1
private CarController m_car;
// Use this for initialization
void Start () {
m_car = GetComponent<CarController>();
}
// Update is called once per frame
void FixedUpdate () {
OVRInput.FixedUpdate();
float angle = 0;
if (((OVRInput.GetLocalControllerRotation(OVRInput.Controller.RTrackedRemote).eulerAngles.y >= 270 &&
OVRInput.GetLocalControllerRotation(OVRInput.Controller.RTrackedRemote).eulerAngles.y <= 359)) ||
((OVRInput.GetLocalControllerRotation(OVRInput.Controller.RTrackedRemote).eulerAngles.y <= 90 &&
OVRInput.GetLocalControllerRotation(OVRInput.Controller.RTrackedRemote).eulerAngles.y >= 0)))
{
float rotationValue = OVRInput.GetLocalControllerRotation(OVRInput.Controller.RTrackedRemote).eulerAngles.y;
// if the value is 3 digit than subtract it from 360 and make it negative
if (Mathf.Floor(Mathf.Log10(rotationValue) + 1) == 3)
{
rotationValue -= 360f;
}
rotationValue /= 90f;
angle = rotationValue;
}
float torque = 0;
if (OVRInput.Get(OVRInput.Button.One))
{
torque = -1;
}
if (OVRInput.Get(OVRInput.Button.PrimaryIndexTrigger))
{
torque = 1;
}
m_car.Move(angle, torque, torque, 0f);
}
}
> BUG: It works right sometimes but it doesn't work sometimes. Sometimes I get different angles & car movement looks buggy(only moves right). So my logic fails
1 Reply
Replies have been turned off for this discussion
- cyberealityGrand ChampionMoving to Unity developer section.
Quick Links
- Horizon Developer Support
- Quest User Forums
- Troubleshooting Forum for problems with a game or app
- Quest Support for problems with your device
Other Meta Support
Related Content
- 6 months ago