Skip to content

Variable: DistanceGrabbable

const DistanceGrabbable: Component<{ detachOnGrab: { default: false; type: Boolean; }; movementMode: { default: string; enum: { MoveAtSource: string; MoveFromTarget: string; MoveTowardsTarget: string; RotateAtSource: string; }; type: Enum; }; moveSpeedFactor: { 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; }; targetPositionOffset: { default: [number, number, number]; type: Vec3; }; targetQuaternionOffset: { default: [number, number, number, number]; type: Vec4; }; 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:66

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.
  • Configure target position and rotation offsets relative to the input source for MoveTowardsTarget mode.
  • Works with the GrabSystem to create specialized distance grab handles.
  • Perfect for telekinetic‑style interactions and remote object manipulation.

Examples

ts
entity.addComponent(DistanceGrabbable, {
  movementMode: MovementMode.MoveTowardsTarget,
})
ts
entity.addComponent(DistanceGrabbable, {
  rotate: true,
  translate: true,
  scale: false,
  movementMode: MovementMode.MoveAtSource,
  returnToOrigin: true
})
ts
entity.addComponent(DistanceGrabbable, {
  movementMode: MovementMode.RotateAtSource,
})
ts
entity.addComponent(DistanceGrabbable, {
  movementMode: MovementMode.MoveTowardsTarget,
  targetPositionOffset: [0, 0, -0.3], // 0.3m forward in controller space
  targetQuaternionOffset: [0, 0, 0, 1], // no rotation offset
})

See

Privacy | Terms