Variable: DistanceGrabbable
const
DistanceGrabbable:Component
<{movementMode
: {default
:string
;enum
: {MoveAtSource
:string
;MoveFromTarget
:string
;MoveTowardsTarget
:string
;RotateAtSource
:string
; };type
:Enum
; };moveSpeed
: {default
:number
;type
:Float32
; };returnToOrigin
: {default
:false
;type
:Boolean
; };rotate
: {default
:true
;type
:Boolean
; };rotateMax
: {default
: [number
,number
,number
];type
:Vec3
; };rotateMin
: {default
: [number
,number
,number
];type
:Vec3
; };scale
: {default
:true
;type
:Boolean
; };scaleMax
: {default
: [number
,number
,number
];type
:Vec3
; };scaleMin
: {default
: [number
,number
,number
];type
:Vec3
; };translate
: {default
:true
;type
:Boolean
; };translateMax
: {default
: [number
,number
,number
];type
:Vec3
; };translateMin
: {default
: [number
,number
,number
];type
:Vec3
; }; }>
Defined in: packages/core/src/grab/distance-grabbable.ts:49
Component for enabling distance‑based object grabbing and manipulation.
Remarks
- Allows users to grab and manipulate objects from a distance through ray casting.
- Supports three movement modes: MoveTowardsTarget, MoveAtSource, and RotateAtSource.
- MoveTowardsTarget: Object smoothly moves toward the input source that's grabbing.
- MoveAtSource: Object moves relative to hand movement while maintaining distance.
- RotateAtSource: Object rotates in place without translation or scaling.
- Optional
returnToOrigin
makes objects snap back to their original position when released. - Supports rotation, translation, and scaling with per‑axis constraints.
- Works with the GrabSystem to create specialized distance grab handles.
- Perfect for telekinetic‑style interactions and remote object manipulation.
Examples
entity.addComponent(DistanceGrabbable, {
movementMode: MovementMode.MoveTowardsTarget,
})
entity.addComponent(DistanceGrabbable, {
rotate: true,
translate: true,
scale: false,
movementMode: MovementMode.MoveAtSource,
returnToOrigin: true
})
entity.addComponent(DistanceGrabbable, {
movementMode: MovementMode.RotateAtSource,
})