关于 matterjs
用于在 HTML、React 或纯 canvas 项目中构建 Matter.js 物理模拟的技能,涵盖基础设置、可选交互和应用退出时的清理。
主要功能
- 01选择环境与渲染方式
- 02设置引擎、世界、渲染器和循环
- 03添加物体与约束的模式
- 04配置鼠标交互
- 05提供 SPA 清理指南
适用场景
- 01启动 Matter.js 模拟
- 02添加可拖动的鼠标交互
- 03在 SPA 中清理模拟
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ mengto/ skills --skill matterjs安装后在 Claude Code 中输入/matterjs确认已加载。
附带文件demo/index.htmldemo/PROMPT.md
详细介绍
Matter.js 技能
工作流
- 确认环境(纯 HTML、React 或仅 canvas)和渲染方式(用于调试的 Matter.Render 或自定义渲染器)。
- 提供最精简的 Engine/World/Render/Runner 设置,并添加刚体。
- 仅在用户要求时添加交互(鼠标约束)或约束。
- 分享适用于 SPA 或拆卸场景的清理步骤。
最简设置
<script>
const { Engine, Render, Runner, Bodies, Composite } = Matter;
const engine = Engine.create();
const render = Render.create({
element: document.body,
engine: engine,
options: {
width: 800,
height: 600,
wireframes: false
}
});
const runner = Runner.create();
Runner.run(runner, engine);
Render.run(render);
const ground = Bodies.rectangle(400, 610, 810, 60, { isStatic: true });
const box = Bodies.rectangle(400, 200, 80, 80);
Composite.add(engine.world, [ground, box]);
</script>
常见模式
- 使用
Composite.add(engine.world, [...])将刚体添加到世界中。 - 使用
Render.create({ element, engine })自动创建画布,或传入自行创建的canvas。 - 设置
render.options.wireframes = false以进行实体渲染。 - 使用
Runner.run(runner, engine)启动简单循环;如果需要自定义计时,则在自己的循环中调用Engine.update。
鼠标交互(可选)
const { Mouse, MouseConstraint } = Matter;
const mouse = Mouse.create(render.canvas);
const mouseConstraint = MouseConstraint.create(engine, { mouse });
Composite.add(engine.world, mouseConstraint);
render.mouse = mouse;
清理检查清单(SPA)
- 使用
Runner.stop(runner)停止运行器。 - 从 DOM 中移除渲染画布。
- 根据需要清除引擎和世界。
规格缺失时要询问的问题
- 画布应使用多大的视口尺寸和缩放比例?
- 我们使用 Matter.Render 还是自定义渲染器?
- 你需要鼠标/触摸拖拽交互吗?
- 模拟循环在画布移出视口时是否应暂停?
评论
支持 Markdown