This is the interface to our plugin. It stores references to the current GameBoard, Camera, and Wand (not in this preview), and it exposes configuration settings that manage them. Under the hood, it performs all the external library calls and setup/teardown management.


The Camera field points to a camera in the scene that will be controlled by the Tilt Five plugin. Since its Transform will be driven by the player’s head motion, it’s recommended not to directly modify the Camera’s Transform. Likewise, the field of view and other camera settings will be dictated by the Tilt Five plugin, so these values should also remain as they are. To overgeneralize: assign the Camera, and don’t touch it afterwards.

It should be noted that the Camera driven by the plugin will assume a default pose if the glasses are unavailable, making it impossible to move. This is also the default behavior when running the scene using the Tilt Five SDK Preview.

Mirror Mode

The mirror mode setting controls whether the glasses view is mirrored to the screen. There are options for viewing the Left Eye or Right Eye cameras, as well as a split-screen Stereoscopic option. Finally, this feature can be turned off by selecting None.

Game Board

The Game Board field points to a GameObject with the GameBoard component attached. The glasses and wand orient themselves relative to the current Game Board, so if you need to move the camera somewhere, it is best to do so indirectly by moving this GameObject. It is also possible to exchange one Game Board for another. In this way, it’s possible to set up a scene with multiple GameBoard GameObjects at different positions/orientations and teleport between them.

Content Scale

The Content Scale field relates Unity’s world space units to physical distances in the real world, such as meters, inches, etc. For example, if a 1x1x1 cube is placed in the scene, and the Content Scale is set to 5 centimeters, then a player wearing the glasses will see that cube as 5 centimeters wide/tall on the game board.

Bear in mind that Content Scale does not affect physics simulation interactions like gravity. For example, if the Unity scene being displayed is a large 1000x1000x1000 space, and the Content Scale is set to 1mm, the scene will appear to be a 1m3 space to the player. However, an object dropped from y1000 will take multiple seconds to fall at Unity’s default gravity setting of 9.81units/s2, even though it only fell 1 meter from the player’s perspective. It is up to the developer to determine whether this is desirable, as this may be appropriate behavior for a large-scale simulation game, but perhaps not for a board game like chess.

It is fairly simple to increase gravity to match the player’s reference frame. This can be accomplished by dividing Unity’s gravity value of 9.81units/s2 by the Content Scale (converted to meters), which can be accessed from the TiltFiveManager like so:

public class GravityCompensator : MonoBehaviour
    public TiltFive.TiltFiveManager tfManager;

    // It may be useful to hold onto the original gravity value.
    private Vector3 originalGravity = Physics.gravity;

    void Start()
        // Convenience property for the Content Scale in Unity worldspace units.
        // (e.g. 10cm Content Scale would result in a value of 0.1)
        float gravityScalar = tfManager.scaleSettings.physicalMetersPerWorldSpaceUnit;
        // Scaling the GameBoard will also affect gravity. To compensate:
        gravityScalar *= tfManager.scaleSettings.gameBoardScale;
        // Divide the original gravity by the Content Scale
        // (and perhaps game board scale)
        Physics.gravity = originalGravity / gravityScalar;