Something went wrong. Try again.
Experimental canvas 2D engine for tile-based sidescroller/sandbox games, created strictly for educational purposes.
entity-component-system game-engine canvas-2d
Something went wrong. Try again.
1234567891011121314151617181920212223242526272829import { Cosmic, System, Entity } from "@cosmic/core";import { Transform, PlayerControlled } from "@cosmic/kit/components";
export class PlayerControlSystem extends System { public requiredComponents = new Set([Transform.name, PlayerControlled.name]);
constructor(private engine: Cosmic) { super(); }
update(entities: Entity[], deltaTime: number): void { const input = this.engine.input;
entities.forEach((entity) => { const transform = entity.getComponent(Transform)!; const playerControlled = entity.getComponent(PlayerControlled)!;
if (input.isKeyDown(playerControlled.inputUp)) transform.y -= playerControlled.speed * deltaTime; if (input.isKeyDown(playerControlled.inputDown)) transform.y += playerControlled.speed * deltaTime; if (input.isKeyDown(playerControlled.inputLeft)) transform.x -= playerControlled.speed * deltaTime; if (input.isKeyDown(playerControlled.inputRight)) transform.x += playerControlled.speed * deltaTime; }); }}