Pointer events
Last updated
Last updated
You can capture pointer events from the mouse or touch to interact with 3D objects in your world. This can be done with the PointerEvents
service which can be injected in other services, actors or components.
To use the PointerEvents service, inject it in in your game code. In the following example we do it in the game service, but you may use it in any other service or actor. The PointerEvents service has many methods to subscribe to different types of events. In the example we are simply passing in the entire scene to detect clicking on any object. However, the methods support passing in specific objects, actors or actor types.
The following events can be subscribed to.
click - The object was clicked, meaning that the touch or mouse down event started and ended on the same object.
pointer down - The touch or mouse down event started on the object.
pointer up - The touch or mouse up event event ended on the object.
pointer enter - The touch or mouse pointer was moved onto the object. This event is only emitted once until the pointer leaves the object.
pointer leave - The touch or mouse pointer moved away from the object.
pointer move - The touch or mouse pointer is moving over the object. The event is emitted whenever the pointer moves.
When subscribing to events you can use different targets
Object3D - Any 3D object in the scene can be used for events.
Actor - A specific actor instance.
Actor type - An actor class to capture events from any instance of that type.
The following methods exist on the PointerEvents service for different types of events and targets.
onPointerEnterObject3D
onPointerEnterActor
onPointerEnterActorType
onPointerLeaveObject3D
onPointerLeaveActor
onPointerLeaveActorType
onClickObject3D
onClickActor
onClickActorType
onPointerDownActor
onPointerDownActorType
onPointerDownObject3D
onPointerUpActor
onPointerUpActorType
onPointerUpObject3D
onPointerMoveActor
onPointerMoveActorType
onPointerMoveObject3D
When an event happens, your callback function will receive an object containing information about the event.
object / actor - Depending on if you are using the Object3D or Actor variant, you will receive either the object or actor that was interacted with.
intersection - Information about the intersection of the raycast with the object.
distance: number - distance between the origin of the ray and the intersection
point: Vector3 - point of intersection, in world coordinates
face: Face - intersected face
object: Object3D - the intersected object
uv: Vector2 - U,V coordinates at point of intersection
uv2: Vector2 - Second set of U,V coordinates at point of intersection