【enchant.js】Hello Physical World vol.5【box2d】

「Hello Physical World」第5回目。今回は Sprite に加える applyImpulse を取り上げます。
box2d.enchant.js には Sprite に力を加える関数が3つ用意されています。
継続的な力を加える applyForce、継続的な回転力を与える applyTorque、そして今回取り上げる applyImpulse は Sprite に瞬間的な力を加えます。
それではリファレンスを確認しましょう。

applyImpulse(impulse)
瞬間的な力を加える

Parameters:
{b2Vec2} impulse
    加える力のベクトル

加える力のベクトルが引数として必要ですね。
b2Vec2 は Box2D で扱うベクトルです。

var vecter = new b2Vec2(0, -1);

という感じで求めます。第一引数は x 軸に加える力、第二引数は y 軸に加える力です。
それでは実際にコードを書いてみましょう。

画面をタップすると、ボールが下から上に等速運動で飛んでゆくのがわかると思います。
b2Vec2 に与える第一引数に、1 を入れてみて下さい。

var vecter = new b2Vec2(1, -1);

今度は右上に等速運動で飛んでいきますね。-1 を入れたら右下に向かって飛んで行きます。

ところでこのコード、重力を設定していません。重力を設定したらどうなるでしょうか。

world = new PhysicsWorld(0.0, 9.8);

おっと! リンゴがどんどん落ちていきますね。ここは落ち着いてタップ! タップ!! タップ!!!
これだけでも十分なゲームになりますね。

では、せっかくなのでちょっとしたゲームを作ってみましょう。

リンゴをゲーム画面から出さずに、向かってくるドクロを避け続けるゲームです。
作りこめば、もっと面白いものができると思いますよ。