import { System } from '../core/System'; import { GameEntity } from '../core/Entity'; export interface CollisionPair { a: GameEntity; b: GameEntity; /** 碰撞法线 (从 a 指向 b) */ normalX: number; normalY: number; /** 穿透深度 */ depth: number; } export declare class PhysicsSystem extends System { static priority: number; /** 重力 */ gravity: { x: number; y: number; }; /** 当前帧的碰撞对 */ private collisions; /** 碰撞回调 */ private collisionCallbacks; onUpdate(dt: number): void; /** * 检查两个实体是否应该碰撞 */ private shouldCollide; /** * 检测两个实体之间的碰撞 */ private checkCollision; /** * 圆形 vs 圆形碰撞检测 */ private circleVsCircle; /** * 矩形 vs 矩形碰撞检测 (AABB) */ private rectVsRect; /** * 圆形 vs 矩形碰撞检测 */ private circleVsRect; /** * 获取当前帧的所有碰撞 */ getCollisions(): readonly CollisionPair[]; /** * 检查实体是否与其他实体碰撞 */ isColliding(entity: GameEntity): boolean; /** * 获取与指定实体碰撞的所有实体 */ getCollidingWith(entity: GameEntity): GameEntity[]; /** * 注册碰撞回调 */ onCollision(callback: (pair: CollisionPair) => void): () => void; /** * 点是否在实体碰撞体内 */ pointInEntity(x: number, y: number, entity: GameEntity): boolean; /** * 射线检测 */ raycast(originX: number, originY: number, dirX: number, dirY: number, maxDistance?: number): { entity: GameEntity; distance: number; point: { x: number; y: number; }; } | null; /** * 射线与单个实体检测 */ private raycastEntity; /** * 分离两个碰撞的实体 */ separate(pair: CollisionPair, ratio?: number): void; /** * 简单的弹性碰撞响应 */ bounce(pair: CollisionPair, restitution?: number): void; } //# sourceMappingURL=PhysicsSystem.d.ts.map