- Home /
Trying to position a world space menu in front of the camera whilst ignoring the camera's tilt angle
I am trying to position a menu in front of a player. From searching on this forum, I found the correct way to achieve this is with the below code.
// player is the Vive headset's camera
Vector3 playerPosition = player.transform.position;
Vector3 playerDirection = player.transform.forward;
Vector3 spawnPos = playerPosition + (playerDirection * 1.5f);
menu.transform.position = spawnPos;
However I am working in virtual reality, and the transform.forward of my player changes depending on what angle my player's headset is tilted. This affects how close or far away the menu is appearing in front of the player.
For example if the player looks toward the ground instead of straight ahead, the menu spawns very close to them, but if they look straight ahead it spawns further away.
Is there some way to take the direction the player is looking in and grab the horizontal transform.forward, ignoring the precise angle the player is tilted at?
Answer by AzzyDude24601 · Mar 12, 2018 at 01:53 PM
The solution for me was to create a copy of the player's object and zero the X and the Z on the Quaternion of the player copy's rotation, forcing the copy to look forward horizontally without tilt. Then I simply used the transform.forward of the edited player copy to calculate the position the menu needs to be spawned at.
GameObject tempPlayer = new GameObject();
tempPlayer.transform.position = player.transform.position;
Quaternion tempRotation = player.transform.rotation;
tempRotation.x = 0;
tempRotation.z = 0;
tempPlayer.transform.rotation = tempRotation;
Destroy(tempPlayer);
Vector3 spawnPos = player.transform.position + (tempPlayer.transform.forward * 1.5f);
menu.transform.position = spawnPos;
Your answer
Follow this Question
Related Questions
My object is translating with speed but does not stop... 1 Answer
How can I get Rigidbody.MoveRotation to rotate in world space on two axes? 1 Answer
Updating world coordinate according to world points 1 Answer
Move camera along 2 axes in WorldSpace 2 Answers
How do I convert a point in the world to coordinates on a world space canvas? 0 Answers