@flare-engine/图纸
铺设 .tmj 和 LDtk 解析 + culled 渲染 + 相撞取出. parseTiled 编号 : parseLDtk 返回一个已规范 TilemapData· ; TilemapRenderer 拥有自己的 SpriteBatch 并且只排入相机界限内的瓷砖; drawInto(camera, batch, opts?) 队列为调用器拥有的批次,用于以图示进行单flush z排序,以纪念每层的 opacity 并选择共享 effect 编号 : alphaScale· ; extractColliders 产生相撞形状 @flare-engine/physics· ; getTileAt 编号 : setTileAt 读取并写入一个平面图层的单元格.
安装
bun add @flare-engine/tilemap
使用量
import { parseTiled, TilemapRenderer, extractColliders } from '@flare-engine/tilemap';
import type { SkImageLike } from '@flare-engine/assets';
import { Camera2D } from '@flare-engine/render';
declare const rawMap: unknown;
declare const tilesetImage: SkImageLike;
const data = parseTiled(rawMap);
// renderer takes only the map; images are registered per tileset name
const renderer = new TilemapRenderer(data);
renderer.setTilesetImage('terrain', tilesetImage);
const camera = new Camera2D();
camera.setViewport(800, 600);
// draw culls to camera bounds; flush owns the actual draw calls
renderer.draw(camera, (batch) =>
batch.flush((image, commands) => {
// hand off image + commands to your Skia drawAtlas bridge
}),
);
const colliders = extractColliders(data);
见 API 规格。 。 。 .
动画牌
每平板动画被解析到 TilesetRef.animations (当地瓦片编号) TileAnimation 与 frames累积数 ends 以秒计 duration) (中文(简体) ). 你过后他们就会玩 time 以秒计——例如,你的时钟已经过去—— drawInto 编号 : draw 选择;没有它,每个平板画都是作者。 LDtk没有平板动画. 对撞机和 getTileAt 总是看到写作的瓷砖.
import type { Camera2D, SpriteBatch } from '@flare-engine/render';
import type { TilemapRenderer } from '@flare-engine/tilemap';
declare const renderer: TilemapRenderer;
declare const camera: Camera2D;
declare const batch: SpriteBatch;
declare const elapsed: number; // seconds since the scene started, advanced by your game clock
renderer.drawInto(camera, batch, { time: elapsed });
许可证
阿帕奇 - 2.0