Headset position relative to OVRCameraRig Unity GameObject Transform Position
I am making a game where the play will only walk around physically. The OVRCameraRig game object in Unity will never actually move. I have this working, but now need to trigger things when the player "gets" to a particular location in the game. Since the player is physically moving around and the OVRCameraRig isn't I can't figure out what game object to put a trigger component onto. I have a debug output mechanism that I can show the x,y,z position of whatever game object I want showing in a HUD. I have put several game objects to output that position and none of them move when the player (headset) moves around in the scene. This is an Oculus Quest.3.9KViews0likes5Comments3rd Person Camera Relative Movement - Strange Behavior After Build to Quest
I'm working on a simple game where a 3rd person player is controlled by the 2d axis movement on one of the controllers. The movement is camera relative. Depending on the direction the headset is facing, the 3rd person player moves in the appropriate direction. Everything works fine when testing the game in Unity. When I build and run the game on Quest (or Quest 2), I get some unexpected behavior that I can't figure out. On Quest, the 3rd person player immediately starts moving (without any 2d axis movement on the controller). I used adb to stream the actual input, and it appears that the primary2Daxis is throwing off a value (even though I'm not pressing anything). As well, the 3rd person player responds to head rotation differently, almost as if there is head rotation alters local direction, rather than global direction as it should. I've got no idea how to troubleshoot this as the behavior is so different in-engine. Any thoughts on where to begin? I'm using Unity 2019.4 LTS and the XR Interaction Toolkit 0.10. Here is the camera relative movement code: private void movePlayer() { if (targetDevice.TryGetFeatureValue(CommonUsages.primary2DAxis, out Vector2 primary2DAxisValue) && primary2DAxisValue != Vector2.zero) { float X = primary2DAxisValue.x; float Y = primary2DAxisValue.y; Vector3 forward = Vector3.Normalize(Vector3.ProjectOnPlane(mainCamera.transform.forward, Vector3.up)); Vector3 right = Vector3.Normalize(Vector3.ProjectOnPlane(mainCamera.transform.right, Vector3.up)); moveDirection = Vector3.Normalize((X * right) + (Y * forward)); transform.rotation = Quaternion.LookRotation(moveDirection); transform.Translate(moveDirection * speed * Time.deltaTime, Space.World); } }Solved2.2KViews1like1CommentHeadset Based Turning
To retain the 6DOF of the headset while still moving along with the player, the camera is currently a child of a body object. The body object is a collider and rigidbody which is moved by the locomotion script. How does one make the body face the same direction as the camera? Currently making the body turn to face the same direction as the camera also turns the camera further as it is a child of the body which in turn turns the body further and so on creating a "dog chasing its tail" effect.396Views0likes0Comments