Class: LocomotionSystem
Defined in: packages/core/src/locomotion/locomotion.ts:64
Physics‑driven locomotion (slide, teleport, turn) backed by the @iwsdk/locomotor!Locomotor engine.
Remarks
- Enable this system via WorldOptions.features.enableLocomotion.
- Add LocomotionEnvironment to level meshes to make them walkable.
- For moving platforms, use
EnvironmentType.KINEMATIC
and keep transforms updated. - In hand‑tracking mode, micro‑gesture controls can toggle turn/teleport using swipe gestures.
Example
world.registerSystem(LocomotionSystem, {
configData: { turningAngle: 45, slidingSpeed: 4.5 }
});
Extends
System
<{comfortAssist
: {default
:number
;type
:Float32
; };initialPlayerPosition
: {default
: [number
,number
,number
];type
:Vec3
; };jumpButton
: {default
:any
;type
:String
; };jumpCooldown
: {default
:number
;type
:Float32
; };jumpHeight
: {default
:number
;type
:Float32
; };maxDropDistance
: {default
:number
;type
:Float32
; };rayGravity
: {default
:number
;type
:Float32
; };slidingSpeed
: {default
:number
;type
:Float32
; };turningAngle
: {default
:number
;type
:Float32
; };turningMethod
: {default
:TurningMethod
;type
:Int8
; };turningSpeed
: {default
:number
;type
:Float32
; };useWorker
: {default
:true
;type
:Boolean
; }; }, {envs
: {required
:Component
<{_envHandle
: {default
:number
;type
:Float32
; };_initialized
: {default
:false
;type
:Boolean
; };type
: {default
:any
;enum
:any
;type
:Enum
; }; }>[]; }; },this
>
Constructors
Constructor
new LocomotionSystem(
_w
,_qm
,_p
):LocomotionSystem
Defined in: node_modules/.pnpm/elics@3.3.0/node_modules/elics/lib/system.d.ts:73
Parameters
_w
_qm
QueryManager
_p
number
Returns
LocomotionSystem
Inherited from
createSystem( { envs: { required: [LocomotionEnvironment] }, }, { /** Starting player position before the first update. */ initialPlayerPosition: { type: Types.Vec3, default: [0, 0, 0] }, /** Run the locomotion engine in a WebWorker for better main‑thread perf. */ useWorker: { type: Types.Boolean, default: true }, /** Comfort vignette strength forwarded to SlideSystem. */ comfortAssist: { type: Types.Float32, default: 0.5 }, /** Maximum sliding speed (m/s). */ slidingSpeed: { type: Types.Float32, default: 5 }, /** Turning mode: snap vs smooth. */ turningMethod: { type: Types.Int8, default: TurningMethod.SnapTurn }, /** Degrees per snap turn. */ turningAngle: { type: Types.Float32, default: 45 }, /** Degrees per second for smooth turning. */ turningSpeed: { type: Types.Float32, default: 180 }, /** Parabolic ray gravity for teleport guide (negative). */ rayGravity: { type: Types.Float32, default: -0.4 }, /** Max drop allowed when projecting the player onto walkable surfaces. */ maxDropDistance: { type: Types.Float32, default: 5.0 }, /** Jump apex height in meters. */ jumpHeight: { type: Types.Float32, default: 1.5 }, /** Minimum seconds between jumps. */ jumpCooldown: { type: Types.Float32, default: 0.1 }, /** Button used to jump in SlideSystem. */ jumpButton: { type: Types.String, default: InputComponent.A_Button }, }, ).constructor
Properties
camera
readonly
camera:PerspectiveCamera
Defined in: packages/core/src/ecs/system.ts:60
Inherited from
cleanupFuncs
readonly
cleanupFuncs: () =>void
[]
Defined in: packages/core/src/ecs/system.ts:63
Returns
void
Inherited from
config
config:
SystemConfigSignals
<S
>
Defined in: packages/core/src/ecs/system.ts:48
Inherited from
createEntity()
createEntity: () =>
Entity
Defined in: packages/core/src/ecs/system.ts:69
Returns
Entity
Inherited from
globals
globals:
Record
<string
,any
>
Defined in: packages/core/src/ecs/system.ts:53
Inherited from
input
readonly
input:XRInputManager
Defined in: packages/core/src/ecs/system.ts:58
Inherited from
isPaused
isPaused:
boolean
Defined in: packages/core/src/ecs/system.ts:47
Inherited from
player
readonly
player:XROrigin
Defined in: packages/core/src/ecs/system.ts:57
Inherited from
priority
priority:
number
Defined in: packages/core/src/ecs/system.ts:52
Inherited from
queries
queries:
Record
<keyofQ
,Query
>
Defined in: packages/core/src/ecs/system.ts:49
Inherited from
queryManager
queryManager:
QueryManager
Defined in: packages/core/src/ecs/system.ts:51
Inherited from
renderer
readonly
renderer:WebGLRenderer
Defined in: packages/core/src/ecs/system.ts:61
Inherited from
scene
readonly
scene:Scene
Defined in: packages/core/src/ecs/system.ts:59
Inherited from
visibilityState
readonly
visibilityState:Signal
<VisibilityState
>
Defined in: packages/core/src/ecs/system.ts:62
Inherited from
world
world:
World
Defined in: packages/core/src/ecs/system.ts:50
Inherited from
xrFrame
xrFrame:
XRFrame
Defined in: packages/core/src/ecs/system.ts:55
Inherited from
xrManager
xrManager:
WebXRManager
Defined in: packages/core/src/ecs/system.ts:54
Inherited from
Methods
destroy()
destroy():
void
Defined in: packages/core/src/locomotion/locomotion.ts:276
Returns
void
Overrides
createSystem( { envs: { required: [LocomotionEnvironment] }, }, { /** Starting player position before the first update. */ initialPlayerPosition: { type: Types.Vec3, default: [0, 0, 0] }, /** Run the locomotion engine in a WebWorker for better main‑thread perf. */ useWorker: { type: Types.Boolean, default: true }, /** Comfort vignette strength forwarded to SlideSystem. */ comfortAssist: { type: Types.Float32, default: 0.5 }, /** Maximum sliding speed (m/s). */ slidingSpeed: { type: Types.Float32, default: 5 }, /** Turning mode: snap vs smooth. */ turningMethod: { type: Types.Int8, default: TurningMethod.SnapTurn }, /** Degrees per snap turn. */ turningAngle: { type: Types.Float32, default: 45 }, /** Degrees per second for smooth turning. */ turningSpeed: { type: Types.Float32, default: 180 }, /** Parabolic ray gravity for teleport guide (negative). */ rayGravity: { type: Types.Float32, default: -0.4 }, /** Max drop allowed when projecting the player onto walkable surfaces. */ maxDropDistance: { type: Types.Float32, default: 5.0 }, /** Jump apex height in meters. */ jumpHeight: { type: Types.Float32, default: 1.5 }, /** Minimum seconds between jumps. */ jumpCooldown: { type: Types.Float32, default: 0.1 }, /** Button used to jump in SlideSystem. */ jumpButton: { type: Types.String, default: InputComponent.A_Button }, }, ).destroy
init()
init():
void
Defined in: packages/core/src/locomotion/locomotion.ts:102
Returns
void
Overrides
play()
play():
void
Defined in: packages/core/src/ecs/system.ts:67
Returns
void
Inherited from
stop()
stop():
void
Defined in: packages/core/src/ecs/system.ts:68
Returns
void
Inherited from
update()
update(
delta
):void
Defined in: packages/core/src/locomotion/locomotion.ts:241
Parameters
delta
number
Returns
void