I’ve been playing around with trying to come up with intuitive controls for a first person game using the Oculus Rift. I quickly chose to decouple the body from both the head and the aim, so turning your head is essentially a free action that has no consequence on how you interact with the game. This is similar to how moving your head works in real life, where you constantly move and rotate your head without expecting it to change what you’re working on or what direction you’re walking in.
The orientation of the body is represented as a reticle that’s freely rotated around in a sphere around the player. Moving forward moves to to where the reticle is pointed, and not where your head is pointed. The reticle gets clipped against an infinite pyramid extending out from the players eyes to avoid it from leaving the field of view. The in-game result of this is that if you turn your head far enough, it will start turning the body as well, and it’s quite visually clear when that will start happening.
Originally, the rotation of the reticle was in euler angles, similar to how fps controls work, but this made the reticle get stuck pointing straight up or straight down when looking up or down. Instead, I tried making it always rotate relative to the camera rotation, meaning moving the mouse right would make it appear to move right on the screen. This worked great when looking up or down, but it meant that looking straight forward, tilting your head to the right and “turning right” would turn your reticle down into the ground. The solution was kind of simple, use the pitch of the camera to control how much of the roll that gets applied to the relative motion of the mouse.
In other words, when the eyes are pointed at the horizon, no amount of roll will affect the direction of the reticle, but as you start looking further up and down, the roll gets added to it more and more. While this feels fairly intuitive to play, I render the reticle rotated to this dimension, meaning that moving the mouse right will always move the reticle to what appears to be right of the reticle texture.
Moving the reticle to the left or right edges of the clip space spins the player around, so the body can pull on the head as well. This doesn’t feel very natural, but some control similar to that is required unless you want the player to turn around 360 degrees in their chair. The player can not spin the view up and down with only mouse controls.