FirstPersonBehavior
@zylem/game-lib / behavior / FirstPersonBehavior
Variable: FirstPersonBehavior
constFirstPersonBehavior:BehaviorDescriptor<FirstPersonBehaviorOptions, \{attachViewmodel: (entity,offset) =>void;getPitch: () =>number;getState: () =>FirstPersonState;getYaw: () =>number; \},FirstPersonEntity>
Defined in: node_modules/.pnpm/@zylem+behaviors@0.8.9_@types+react@19.3.0_react@19.3.0_three@0.185.1/node_modules/@zylem/behaviors/dist/first-person.d.ts:195
FirstPersonBehavior - typed descriptor for first-person movement and camera control.
Provides complete first-person controller including:
- WASD movement relative to camera yaw
- Mouse look driving a FirstPersonPerspective
- Optional viewmodel positioning (weapon/item following camera)
- Walk/run state tracking via FSM
Example
import { FirstPersonBehavior } from "@zylem/game-lib/behavior";
import { createCamera, Perspectives, FirstPersonPerspective } from "@zylem/game-lib/core";
import { createActor } from "@zylem/game-lib/entity";
const fpsCamera = createCamera({ perspective: Perspectives.FirstPerson, ... });
const fps = fpsCamera.getPerspective<FirstPersonPerspective>();
const player = createActor({ name: 'player', ... });
const controller = player.use(FirstPersonBehavior, {
perspective: fps,
walkSpeed: 8,
runSpeed: 16,
lookSensitivity: 2,
});
// In update loop - write input, behavior handles the rest
player.onUpdate(({ inputs }) => {
player.$fps.moveX = inputs.p1.axes.Horizontal.value;
player.$fps.moveZ = inputs.p1.axes.Vertical.value;
player.$fps.lookX = inputs.p1.axes.SecondaryHorizontal.value;
player.$fps.lookY = inputs.p1.axes.SecondaryVertical.value;
player.$fps.sprint = inputs.p1.shoulders.LTrigger.held > 0;
});