How do i rotate object on y-axis based on rotation of oculus?

Hi there,
I want to do fairly a simple job yet i haven’t come across a good way of doing it, what i want to do is rotate my player capsule on y-axis based on HMD’s rotation on y-axis so that player faces the direction the player looks in. The following lines of code rotate capsule on all axis which i don’t want.

Update(){
Quaternion Angles=InputTracking.GetLocalRotation(VRNode.Head);
transform.rotation=Angles;

}

I want something like

Update(){
Quaternion Angles=InputTracking.GetLocalRotation(VRNode.Head);
transform.rotation=Quaternion.Euler(0,Angles.Y,0);
}

that should restrict the rotation of player only on y-axis such that the player faces the direction it looks in. But it doesn’t do anything at all.
what could be a way to get this thing done?

2 Answers

2

Simply:

Update()
{
      Quaternion angles = InputTracking.GetLocalRotation(VRNode.Head);
      transform.rotation = Quaternion.Euler(0, angles.eulerAngles.y, 0);
 }

You will probably need to transform the rotation from “tracking space” to “world space”, by post-multiplying an offset Quaternion (rotation from tracking to world space).

I have not tested this code.

@N3MS thankyou dude, it worked like a charm, is there any way to get a reference of emitted particles? like camera smoothly following a particle?

thank you :D

Hi, I try to do the same thing, I tested some tricks but nothing has worked as expected.

I've actually just thought of an easier way to do this. Create two colliders: Collider 1 will be the main collider and surround your whole player 2) will be set to a trigger and will sit just below your player (make the collider fairly small). Now in your script check for OnTriggerEnter2D and if this is called you know that your player is on top of the enemy.