I have a google cardboard setup (actually made of cardboard), and I have another better made headset but still lower cost. There’s no buttons though and my phone is basically inserted inside the devices, so I’m unable to press any area of the screen or any external phone buttons.
Gaze input. The GoogleVR SDK has gaze input modules so you can do everything by what you’re looking at.
For example, if you want to move you will need some way to move with Gaze. Some options are “Lookwalk” (gaze down to walk, gaze up to stop walking) or you can use a Waypoint system by gazing at waypoints.
To interact with objects, buttons, etc often you will have some delay like 1 or 2 seconds, while gazing at the object, before an action occurs. For example, you can look at a button for 2 seconds and then a click will happen.
Mobile VR Movement Pack has both lookwalk and waypoint system:
Mobile VR Interaction Pack has a gaze input system so GoogleVR is not necessary:
I haven’t used this one yet, but GazeClick for GoogleVR looks great also:
Yes you can use any HID connected joypad on the phone, read it using standard unity Input API.
But beware lots off different android compatible controllers out there have different button mappings, so really to use multiple action buttons you need to allow user to easily define their own mappings. And also give them a way into said mapping function with no initial input (use gaze).
Easiest joypad input: Just read input(“axisX”) and (“axisY”) for joystick/directional control and then treat any button as your action button, so only one button control in game, and any button on any controller will be treated as this single button input.
You must also be prepared to receive quantized AxisX/Y inputs, some crappier controllers have their sticks mapped like digital dpads so instead of analogue inputs coming in you get -1, 0 or +1 for each axis, and some of them even map sticks and/or buttons to key events, usually stick gets mapped to cursor keys so unity input api (“Axis_”) still reads them OK.
You can of course combine this with gaze controls and it becomes more than powerful enough for most game ideas because you can make the joystick/button control different things depending on gaze etc.
Another novel input scheme that will work with any phone is detecting accelerometer impulses to allow users to tap on the left or right side of their headsets and use that as a button input. However holding hand up to head height gets uncomfortable real quick for everyone, it was a terrible decision by gearvr to have the temple control pad.
It was also a bad decision by google not to put 2nd app button where the power light is, had they done that then a whole new control mode would be open: turn controller 90deg and youve got a small ambidextrous stick and button joypad, but alas…
Personally, I don’t use any controllers for VR and don’t like using controllers. For one, VR is special because it’s an immersive experience to our eyes and ears (360 video, spatial audio). So to properly fool the brain, all senses should be immersed.
When I’m hold a controller and pressing a button, which in turn performs some other, non-related function in the game (like jumping for example) then I have lost immersion with my hands (sense of touch) as they are doing something completely unrelated to what’s happening in VR. In other words, controllers break immersion between what my hands are doing and my head (eyes/ears) are experiencing.
I like SiliconDroid’s solution to this problem, as his character is holding a controller in VR- so immersion is NOT broken for the physical player also holding a controller:
This ‘Immersion-breaking’ aspect of Bluetooth controllers, coupled with the fact like SiliconDroid has said, where every bluetooth controller out there has some different button mapping scheme, you really do have to have players set their own controls. “Press which button you would like to jump with” … “Press what button you would like to shoot with”… etc.
And overall, supporting bluetooth controllers is a big and cumbersome tasks which, in the end, will probably break immersion, the 1 thing that makes VR special.
Controllers like Leap Motion and NOLO VR are promising, but who knows if peripherals like that will ever reach mass consumer adoption, where your game reaches enough people to make a profit.
All that being said, I personally think the input system of Gear VR’s ‘Temple pad’ is a good solution for a ‘tap’ button input, even if I never tap my temple in real life.
Yup, as @Selzier says… immersion!
It’s a fragile and magical state that you must strive to mantain. Just dumping a controller based game into VR can just make it feel like you’re playing ‘normal’ game on a big low res screen.
It’s a real shame daydream controllers cant be purchased seperately for like $20 so cardboard hobos can also use them, they’re quite a nice little VR controller with good potential for immersive avatar rigging.