miaoda-game-topdown-vehicle-core
v0.3.1
Published
Engine-agnostic top-down arcade vehicle kinematics with heading acceleration, rolling steering, and configurable grip. The overhead counterpart to arcade-motion-core and road-core.
Maintainers
Readme
miaoda-game-topdown-vehicle-core
Engine-independent top-down arcade vehicle kinematics for cars, tanks, and drifting overhead racers. It models position, heading, and velocity on a free 2D plane; collision, tracks, laps, rendering, and rigid-body contacts remain game-owned.
pnpm add miaoda-game-topdown-vehicle-coreconst car = new TopDownVehicle({maxSpeed: 1200, grip: 0.92});
car.update(dt, {throttle: gas ? 1 : 0, brake: brake ? 1 : 0, steer});
sprite.setPosition(car.position.x, car.position.y);
sprite.angle = car.heading * 180 / Math.PI;dt is seconds; velocity and speed are world units per second. Heading is radians, with 0 along +x and counterclockwise positive. throttle/brake are 0..1, steer is -1..1, and braking from rest reverses. Heading and velocity may differ, which creates drift; grip ranges from 0 (keeps sliding) to 1 (velocity aligns immediately).
Normal steering scales with speed and reverses while backing up, so a parked car cannot pivot. Set pivotSteer: true for a tank/mech hull that rotates at full turn rate at any speed. A separately aimed turret remains a game-owned child transform.
Drag and grip compose across substeps, while acceleration/steering are integrated approximately. Use a fixed or bounded dt after pauses. Read speed, speedFraction, forwardSpeed, and isDrifting() for presentation and rules.
