UNPKG

@rpgjs/physic

Version:

A deterministic 2D top-down physics library for RPG, sandbox and MMO games

75 lines 2.15 kB
import { MovementBody, MovementStrategy } from '../MovementStrategy'; /** * Type of projectile trajectory. */ export declare enum ProjectileType { Straight = "straight", Arc = "arc", Bounce = "bounce" } /** * Configuration for a projectile trajectory. */ export interface ProjectileOptions { /** Horizontal speed in units per second */ speed: number; /** Heading direction (will be normalized) */ direction: { x: number; y: number; }; /** Maximum travel distance (optional) */ maxRange?: number; /** Maximum lifetime in seconds (optional) */ lifetime?: number; /** Initial vertical height */ initialHeight?: number; /** Apex height for arc trajectories */ maxHeight?: number; /** Gravity strength applied to arc/bounce projectiles */ gravity?: number; /** Number of allowed bounces */ maxBounces?: number; /** Energy retained after each bounce (0-1) */ bounciness?: number; /** Drag factor applied per second (0-1) */ drag?: number; /** Optional callback receiving height updates */ onHeightUpdate?: (height: number, body: MovementBody) => void; } /** * Moves an entity following a projectile trajectory. * * @example * ```typescript * const projectile = new ProjectileMovement(ProjectileType.Arc, { * speed: 12, * direction: { x: 1, y: 0 }, * maxHeight: 3, * gravity: 30, * }); * movementManager.add(entity, projectile); * ``` */ export declare class ProjectileMovement implements MovementStrategy { private readonly type; private elapsed; private distanceTraveled; private startPosition; private bounceCount; private stage; private finished; private currentHeight; private verticalVelocity; private readonly direction; private readonly options; constructor(type: ProjectileType, options: ProjectileOptions); update(body: MovementBody, dt: number): void; isFinished(): boolean; getHeight(): number; getProgress(): number; private updateFlying; private updateRolling; private finish; } //# sourceMappingURL=ProjectileMovement.d.ts.map