matterjs について
HTML、React、canvas のプロジェクトで Matter.js の物理シミュレーションを構築するためのスキルです。基本設定や任意の操作、アプリ終了時のクリーンアップを案内します。
主な機能
- 01環境とレンダラーの選択
- 02エンジン、ワールド、描画、ループの設定
- 03ボディと拘束の追加パターン
- 04マウス操作の設定
- 05SPA のクリーンアップ案内
活用シーン
- 01Matter.js シミュレーションの開始
- 02ドラッグ可能なマウス操作の追加
- 03SPA でのシミュレーション終了処理
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ mengto/ skills --skill matterjsインストール後、Claude Code で/matterjsを入力して読み込まれたか確認します。
同梱ファイルdemo/index.htmldemo/PROMPT.md
詳細
Matter.js スキル
ワークフロー
- 環境(プレーンな HTML、React、またはキャンバスのみ)と描画方法(デバッグ用の 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 対応