-
Notifications
You must be signed in to change notification settings - Fork 0
Bezier Curve Pointer
[VRTK_BezierPointer]
The Bezier Pointer emits a curved line (made out of game objects) from the end of the controller to a point on a ground surface (at any height). It is more useful than the Simple Laser Pointer for traversing objects of various heights as the end point can be curved on top of objects that are not visible to the player.
The laser beam is activated by default by pressing the Grip on the
controller. The event it is listening for is the AliasPointer events
so the pointer toggle button can be set by changing the
Pointer Toggle button on the VRTK_ControllerEvents script
parameters.
The Bezier Pointer script is attached to a Controller object within the
[CameraRig] prefab and the Controller object also requires the
VRTK_ControllerEvents script to be attached as it uses this for
listening to the controller button events for enabling and disabling
the beam.
The following script parameters are available:
- Enable Teleport: If this is checked then the teleport flag is set to true in the Destination Set event so teleport scripts will know whether to action the new destination. This allows controller beams to be enabled on a controller but never trigger a teleport (if this option is unchecked).
- Pointer Hit Color: The colour of the beam when it is colliding with a valid target. It can be set to a different colour for each controller.
- Pointer Miss Color: The colour of the beam when it is not hitting a valid target. It can be set to a different colour for each controller.
- Show Play Area Cursor: If this is enabled then the play area boundaries are displayed at the tip of the pointer beam in the current pointer colour.
- Play Area Cursor Dimensions: Determines the size of the play area cursor and collider. If the values are left as zero then the Play Area Cursor will be sized to the calibrated Play Area space.
-
Handle Play Area Cursor Collisions: If this is ticked then if
the play area cursor is colliding with any other object then the
pointer colour will change to the
Pointer Miss Colorand theWorldPointerDestinationSetevent will not be triggered, which will prevent teleporting into areas where the play area will collide. - Beam Always On: If this is checked the the pointer beam is always visible but the Destination Set event is still only emitted when the assigned button is pressed.
- Activate Delay: The time in seconds to delay the pointer beam being able to be active again. Useful for preventing constant teleportation.
- Pointer Length: The length of the projected forward pointer beam, this is basically the distance able to point from the controller potiion.
- Pointer Density: The number of items to render in the beam bezier curve. A high number here will most likely have a negative impact of game performance due to large number of rendered objects.
- Show Pointer Cursor: A cursor is displayed on the ground at the location the beam ends at, it is useful to see what height the beam end location is, however it can be turned off by toggling this.
- Pointer Cursor Radius: The size of the ground pointer cursor, This number also affects the size of the objects in the bezier curve beam. The larger the raduis, the larger the objects will be.
- Beam Curve Offset: The amount of height offset to apply to the projected beam to generate a smoother curve even when the beam is pointing straight.
- Custom Pointer Tracer: A custom Game Object can be applied here to use instead of the default sphere for the beam tracer. The custom Game Object will match the rotation of the controller.
- Custom Pointer Cursor: A custom Game Object can be applied here to use instead of the default flat cylinder for the pointer cursor.
The Bezier Pointer object extends the VRTK_WorldPointer abstract
class and therefore emits the same events and payload.
An example of the VRTK_BezierPointer script can be viewed in
the scene SteamVR_Unity_Toolkit/Examples/009_Controller_BezierPointer
which is used in conjunction with the Height Adjust Teleporter shows
how it is possible to traverse different height objects using the
curved pointer without needing to see the top of the object.
Another example can be viewed in the scene
SteamVR_Unity_Toolkit/Examples/012_Controller_PointerWithAreaCollision
that shows how a Bezier Pointer with the Play Area Cursor and Collision
Detection enabled can be used to traverse a game area but not allow
teleporting into areas where the walls or other objects would fall into
the play area space enabling the player to enter walls.
The bezier curve generation code is in another script located at
SteamVR_Unity_Toolkit/Scripts/Helper/CurveGenerator.cs and was
heavily inspired by the tutorial and code from [Catlike Coding].
- Home
- Quick Start
- FAQ/Troubleshooting
- Prefabs
-
Scripts
- Controllers
- Pointers
- Movement
- Interactions
- Examples