# GvrControllerPointer prefab

# GvrControllerPointer prefab

Provides a rendered Daydream controller with built-in laser pointer that moves in response to the user's motion based on the configured arm model.

Must be a sibling to the main camera, so that the camera and controller transforms share a common parent transform. This ensures that the controller remains visible as the user changes the direction in which they are facing.

Requires an instance of the [`GvrControllerMain`](https://developers.google.com/vr/reference/unity/prefab/GvrControllerMain) prefab to exist in the scene in order to be use the Google VR input system.

## Prefab Hierarchy

| Game object name | Description |
|---|---|
| [`GvrControllerPointer`](https://developers.google.com/vr/reference/unity/prefab/GvrControllerPointer#GvrControllerPointer_object) | Ensures that the controller's local position and local rotation are updated based on the configured arm model settings. |
| └ [`ControllerVisual`](https://developers.google.com/vr/reference/unity/prefab/GvrControllerPointer#ControllerVisual_object) | Renders the controller. Can be disabled or removed if your app handles controller rendering. |
| └ [`Laser`](https://developers.google.com/vr/reference/unity/prefab/GvrControllerPointer#Laser_object) | Renders the built-in laser pointer and controls the raycast mode used by the pointer. Can be disabled or removed if your app handles pointer input through custom code. |
| └ [`Reticle`](https://developers.google.com/vr/reference/unity/prefab/GvrControllerPointer#Reticle_object) | Renders the built-in reticle at the end of the laser pointer. Can be disabled or removed if your app provides its own custom reticle. |

## GvrControllerPointer game object

Ensures that the controller's local position and local rotation are updated based on the configured arm model settings.

Includes:

- [`GvrTrackedController`](https://developers.google.com/vr/reference/unity/class/GvrTrackedController) that is responsible for updating the controller local position and local rotation each frame, based on the configured arm model settings

- [`GvrArmModel`](https://developers.google.com/vr/reference/unity/class/GvrArmModel) that allows for basic customization. This arm model can also be replaced for more advanced use cases. See also the custom arm models provided by [Daydream Elements](https://developers.google.com/vr/elements/arm-model)

Components:

[GvrArmModel](https://developers.google.com/vr/reference/unity/class/GvrArmModel),

[GvrTrackedController](https://developers.google.com/vr/reference/unity/class/GvrTrackedController),


[UnityEngine.Transform](https://docs.unity3d.com/Manual/class-Transform.html)

## ControllerVisual game object

Renders the controller. Can be disabled or removed if your app handles controller rendering.

Use the **Attachment Prefabs** list to specify any number of prefabs that should be instantiated at runtime with the controller, such as a tooltips prefab.

The SDK includes two customizable tooltips prefabs:

- [`GvrControllerTooltipsSimple`](https://developers.google.com/vr/reference/unity/prefab/GvrControllerTooltipsSimple) \* [`GvrControllerTooltipsTemplate`](https://developers.google.com/vr/reference/unity/prefab/GvrControllerTooltipsTemplate)

Components:

[GvrControllerVisual](https://developers.google.com/vr/reference/unity/class/GvrControllerVisual),


[UnityEngine.MeshFilter](https://docs.unity3d.com/Manual/class-MeshFilter.html),

[UnityEngine.MeshRenderer](https://docs.unity3d.com/Manual/class-MeshRenderer.html),

[UnityEngine.Transform](https://docs.unity3d.com/Manual/class-Transform.html)

## Laser game object

Renders the built-in laser pointer and controls the raycast mode used by the pointer. Can be disabled or removed if your app handles pointer input through custom code.

Components:

[GvrLaserPointer](https://developers.google.com/vr/reference/unity/class/GvrLaserPointer),

[GvrLaserVisual](https://developers.google.com/vr/reference/unity/class/GvrLaserVisual),


[UnityEngine.LineRenderer](https://docs.unity3d.com/Manual/class-LineRenderer.html),

[UnityEngine.Transform](https://docs.unity3d.com/Manual/class-Transform.html)

## Reticle game object

Renders the built-in reticle at the end of the laser pointer. Can be disabled or removed if your app provides its own custom reticle.

Components:

[GvrControllerReticleVisual](https://developers.google.com/vr/reference/unity/class/GvrControllerReticleVisual),


[UnityEngine.MeshFilter](https://docs.unity3d.com/Manual/class-MeshFilter.html),

[UnityEngine.MeshRenderer](https://docs.unity3d.com/Manual/class-MeshRenderer.html),

[UnityEngine.Transform](https://docs.unity3d.com/Manual/class-Transform.html)