LoginSignup
37
46

More than 5 years have passed since last update.

物理演算エンジン、Matter.jsを使ってみた。

Last updated at Posted at 2015-11-23

ゲーム作成に興味があったので、物理演算エンジン、Matter.jsを使ってみました。

Matter.js

Matter.jsは物理演算が必要なアニメーションやWebゲームを作りたいときに使えるJSのライブラリのようです。

インストール

まずは、本家サイトの手順(http://brm.io/matter-js/#usage) 通りに導入します。

<script src="matter.js" type="text/javascript"></script>

もしくは

bower install matter-js
npm install matter-js

ボールを落とす

実行に必要なデモコードを書きます。

<!-- index.html -->

<main id="stage"></main>

<script src="js/matter-0.8.0.min.js"></script>
<script src="js/app.js"></script>
## app.js
(function() {

var Engine = Matter.Engine;
var World = Matter.World;
var Bodies = Matter.Bodies;

// Matter.js エンジン作成
var engine = Engine.create(document.body);

// 二つの箱(四角)と地面を作る
var boxA = Bodies.rectangle(400, 200, 80, 80);
var boxB = Bodies.rectangle(450, 50, 80, 80);

// isStatic:静的(完全固定)
var ground = Bodies.rectangle(400, 610, 810, 60, { isStatic: true });

// 二つの箱(四角)と地面を追加
World.add(engine.world, [boxA, boxB, ground]);

// Matter.js エンジン起動
Engine.run(engine);

})();

ボールが落ちてくるようになりました。

2c0d0fcc308d3d847040b7e7cee562af.png

バウンドさせたいときは、circleのオプションにあるrestitutionに任意の値を入れることで、バウンドさせることができます。

var boxA = Bodies.circle(375, 100, 50, {
    //バウンドさせたい場合はrestitutionに任意の値を渡す
    restitution: 0.9
}

b9e451beee24553e77154976e8a441d2.png

アニメーションの動きなどを意識せずに「ボールを落とす」という動きを実装することができました。
他、Matter.Bodyクラス、Matter.Engineクラス、Matter.Renderクラス、Matter.Vectorクラス、Matter.Commonクラスにて必要なAPIが用意されています(http://brm.io/matter-js-docs/index.html) 。回転量、速さ、マウスイベントなどを使用して、もっと色んなことができそうです。

以下作っているサンプルです。随時、更新していきます。
https://github.com/yhikishima/MatterJs-dev

【参考】

37
46
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
37
46