Play And Games VR Development Dairy

An exploration of wonders and challanges of VR development.

Refining Movement

Another stage of development was to link the map and the world. Previously, we had the world stationary and by dragging the mini-map, the player and the map were moved accordingly. However this didn’t match the action of dragging. If you are dragging something, you would expect something to move towards you and not you moving towards it. It was a simple variable swap, resulting in moving the entire world instead of camera and player.

Testing this, the results were not ideal. Similar to google earth there was a huge issue of motion sickness. Pulling giant object towards you like mountains very quickly results in nausea.

Accounting for this we decided to solve this with one of two approaches. Either teleport to a separate room where the mini-map is, so you don’t see how the world moves and then, once the moving is done you would teleport back. Or, the second one was to make the movement of the camera independent from the world, and on a button press, the map would hide, and new position calculated and teleported to.

For zooming we want the zoom out to slow down the closer you get to the maximum zoom out position but speed up the zoom in and vice versa. This way it is easier to use to zoom at the middle position and someone tries to zoom in or out further than the game allows, it will get more difficult to do so. Here is some pseudo-code for this speed multiplier.

If (DeltaOfHands > deadZone)
{
Speed = CameraPosition.Y – MaximumPosition.Y;
}
Else If (DeltaOfHands < -deadZone)
{
	Speed = CameraPosition.Y – MinimumPosition.Y;
}
NewPosition = (CameraPosition + DeltaOfHands) * Speed;

Back to mian page