Unless your VR experience is a roller coaster or some other sort of rail-based experience, you shouldn’t take movement control away from the user. Lack of movement control can cause VR sickness.
Here are a couple of approaches for user-controlled movement in VR:
An obvious hangover from non-VR first-person games, moving around with a gamepad is an easy way to provide movement in your 3D space. You can still look around using orientation-based movement.
D-pad to move back/forward/left/right and an additional button to jump or interact.
A movement device that is becoming more prevalent in VR is teleportation. If you’ve got some sort of motion-controls (such as the Vive controllers) in typical VR this is quite easy to achieve. In Google Cardboard WebVR experiences you’ll need to rely on retical-based movement.
The user is projects a circle or marker to where they want to move to, and then they are teleported there.
In my day 12 hack – AAAAH! Zombies – I used retical-based teleportation. I actually stole this from Pete’s earlier day 11 hack: Blink.
I played around with this in day 09’s hack: Speech Recognition to move a ball around, but it could easily be adapted to moving the user around. Simple commands such as “move forward 10” or “move left 5”, much like the old Television series “Knightmare” where the team command their blind team-mate around with commands
Something I’ve been thinking about (but have yet to execute) is gesture-based movement. This would be something like listening for a motion pattern (such as nodding your head) and acting based on that.
You could more simply make the user move in the direction they’re looking when the screen is touched for a period of time.
Recently I played an Android game (Gravity Pull) that used a method of movement called “VR-Step”. VR-Step uses “Inertial sensing” to allow you to move in the direction you’re looking. You can see how it works here: