2Dアクション・テンプレート:物理の対応:基礎の確認

物理エンジン「Box2D」を使うにあたり、「Box2Dで何ができるか」「アクションゲームにどのように使えるか」「こちらでやる作業は何か」についてまずは確認しておく。

=Box2Dで何ができるか=

Box2Dは他の多くの物理エンジンと同様に、以下のことが行える。

=アクションゲームにどのように使えるか=

上の項目で上げたものは、以下のようにアクションゲームで利用できる。

コリジョン(ぶつかり判定)の作成

いわゆる「当たり判定」とか「ぶつかり判定」と呼ばれるものが作れる。Box2Dでは、多くの物理エンジンと同じく、「プリミティブ」と呼ばれる「円」や「四角形」のコリジョン(ぶつかり判定)が作れる。

コリジョンの位置の自動計算

作ったコリジョン(ぶつかり判定)の位置の計算はBox2D側で自動で行ってくれる。例えば、「空中に居るから落下する」「坂に居るから転がる」「壁にぶつかったから進めない」などの挙動を自動で行ってくれる。しかし、アクションゲームとの相性が悪い部分もある。例えば、プレイヤーが「坂に居るから転がる」という挙動をとってもらったら困るだろう(そういうゲームを作るなら別として)。なので、完全に物理エンジンまかせにできるというわけではない。

他のコリジョンとぶつかった時の処理の指定

コリジョンにぶつかった時の処理を指定することで、例えば「敵コリジョンにぶつかったから死ぬ」とか「地形コリジョンが45度以内の傾斜なら"滑らないフラグ"を立てる」という挙動などを実現できる。

ジョイント(コリジョン同士の接続)の作成

アクションゲームで使うことはあまりないが、コリジョン同士を特殊なジョイントで結合することができる。「コリジョン同士が一定距離になるようにする」というような単純なジョイントもあれば、マリオに出てくる「片方の床に乗ったら、乗った床が下がって、もう片方の床が上がる」というギミックのような特殊なジョイント(プーリージョイント)もある。

=こちらでやる作業は何か=

こちらで行う必要がある作業は、だいたい以下の通り。

  • メートルとピクセルの対応付け
    • 物理エンジンにとっての1m」が、「描画エンジンにとって何ピクセルになるか」をあらかじめ決めておく必要がある
  • Box2Dの初期化処理(セットアップ)
  • 「Box2Dの物体の位置」と「画像の位置」の同期
    • Box2Dの位置の方に、画像の位置を合わせる
  • コリジョンの大きさと形状の指定
    • プレイヤーと地形の2つ
  • 入力によるコリジョンの移動
    • プレイヤーの左右移動とジャンプのため


将来的には「敵とぶつかった時の処理」などの対応が必要だが、まずはプレイヤーを動かすところまでということで、今回は対応を保留にしておく。


次回(おそらく明後日)は、これらの実際の設定から表示確認までを行う。

=参考サイト=