ImpactSphere|Matter.jsで作るインタラクティブな落下アニメーション


Webページ上で、画像が重力で落下して跳ね返る──そんな動きに魅了された経験はありませんか?この記事では、物理演算ライブラリ「Matter.js」を活用して、ランダムな大きさの円形画像が落下し、1つだけ色が強調される演出「ImpactSphere」を作る方法を解説します。

完成デモはCodePenで公開しています →

See the Pen Untitled by masakazuimai (@masakazuimai) on CodePen.


Matter.jsとは?

Matter.js は、JavaScriptで物理演算をシミュレーションできる軽量なライブラリです。重力、衝突、摩擦、反発など、リアルな動きをWeb上で簡単に再現できます。

今回のアニメーションでは、次のような要素をMatter.jsで制御しています:

  • 円形画像のランダム落下
  • 壁に当たると跳ね返る
  • ドラッグ操作で移動可能
  • 特定の1つだけ色を変えて注目度をUP

今回作る「ImpactSphere」の特徴

  • PNG形式の円形画像を使用
  • JavaScriptで16個の円をランダムサイズで配置
  • 3つ目だけ、黒い部分を赤に強調表示(擬似要素+CSSマスク)
  • すべて重力・衝突あり、ドラッグで移動可能

Webページの導入アニメーションやバナー演出、キャンペーンなどに応用可能です。


実装のポイント

1. Matter.jsの導入

まずはCDNでMatter.jsを読み込みます。

<script src="https://cdnjs.cloudflare.com/ajax/libs/matter-js/0.19.0/matter.min.js"></script>

2. 画像生成と物理ボディ作成

JavaScriptで円形の画像要素を作成し、それぞれにMatter.jsの物理Bodyを割り当てます。

16個の円をforループでランダムサイズに設定し、3番目の円(インデックス2)にだけspecialクラスを付与します。

3. CSSによる赤マスクの適用

画像の上に擬似要素(::before)を重ね、CSSのmask-imageでマスク処理を行うことで、黒い部分だけ赤く見せる演出を実現します。

.special::before {
  content: '';
  position: absolute;
  inset: 0;
  background-color: red;
  mask-image: url("your-image.png");
  mask-mode: luminance;
  -webkit-mask-image: url("your-image.png");
  -webkit-mask-mode: luminance;
}

4. DOMと物理演算の同期

毎フレームごとに、Matter.jsの物理ボディの位置と角度をDOMに反映させることで、リアルな見た目を実現します。


応用アイデア

  • 特定の色でユーザーに注目させる
  • クリックでアニメーションに変化をつける
  • WebGLやCanvasと組み合わせてより高精度な演出へ
  • 複数色に分岐、ステータスごとに色変化

ImpactSphereは、演出としてだけでなく、UX向上にも活用できます。


jQueryでは作れる?

jQuery単体では、重力や衝突といった物理演算を扱うことができません。擬似的なアニメーションは可能ですが、今回のような本格的な物理アニメーションはMatter.jsのような専用ライブラリの使用が不可欠です。


まとめ

ImpactSphereは、

  • Matter.jsによる本格的な物理演算
  • 擬似要素+マスクによる色変更演出
  • DOMと物理のリアルな同期

を組み合わせた、見た目にも動きにもインパクトのあるアニメーションです。

コードはCodePenにて公開しています。ぜひカスタマイズして、自分だけの演出に発展させてみてください!

✪ 画像素材がないものはランダムで表示されるようになっています。フリー素材などでご用意ください。

おすすめChromeプラグイン一覧

プラグイン名特徴
GoFullPageウェブページ全体のスクリーンショットを簡単に取得できるブラウザ拡張機能です。
ColorZilla色を抽出するための拡張機能です。
WhatFontウェブページ上のフォントの情報を簡単に確認できるブラウザ拡張機能です。
PerfectPixelデザイナーが作成したデザインと実際にコーディングされたウェブページがどの程度一致しているかを確認・調整するためのブラウザ拡張機能です。

模写の手順

ステップ内容
ステップ 1構図を手書きか全画面スクショ(Go full page等)した後、ペイントツールで四角で囲い、大まかなclass,命名規則をあらかじめ決める。
ステップ 2HTMLの基本構造を作成する
ステップ 3CSSでレイアウトを模写する
ステップ 4 中級〜JavaScriptを追加して動きを再現する
ステップ 5最終調整を行い、検証ツールやPerfectPixel(chromeプラグイン)などで完成を確認する。