「アクションゲーム」をどうしたらcocos2dを使って実現できるか4回目:衝突判定 2

時間がかかりましたが、マリオのような「アクションゲーム」が少し前に進みましたので、ブログに載せたいと思います。

今回、実装したこと

マリオ(キャラクター)を大きくした

前回は32*32のキャラクターを利用していましたが、今回は、大きいマリオを作成しました。 デザインは「スーパーマリオブラザーズ3」のマリオを参考にしています。

Mario3 jump

CCTMXTileMapにオブジェクトを追加した

個別にオブジェクトを作成するのは、とてもメンドクサイので、前回作成したマップ上にオブジェクトを配置しました。 Tiledを利用すれば、このオブジェクトも簡単にマップ上に設置することができます。

今回は、「はてなボックス」と「ブロック」を設置しています。 ともに、下からぶつかった時にそれぞれ特殊なアクションを取るようにしています。 ただ、「はてなボックス」に関しては、アイテムを出す実装はまだできていません。画像が変わるだけです。

2013-5-7-ddsd

マリオを大きくする「スーパーキノコ」を作成した

マリオといえば、「スーパーキノコ」。 大きいマリオを作成したということで、簡単ですがマリオが大きくなるアクションを実装しました。

Superkinoko

苦労した点

前回から、時間が空いたように、完成度はまだまだですが、ここまで作成するのにかなり苦労しました。

大きいマリオの衝突判定

大きいマリオにしたことにより、衝突判定がおかしくなりました。これをまず修正しました。 原因は32*32を前提に、プログラムを組んでいたからなのですが、簡単そうに見えてなかなか上手くいきませんでした。

2013-5-7-dds

オブジェクトととの衝突判定

CCTMXLayerとの衝突判定が終わったら、今度はオブジェクト(はてなボックス、ブロック)との衝突判定が上手くいきません。 マリオが大きいせいもありますが、この部分が一番時間がかかりました。 コードの再利用などを考えて実装しているのですが、今の所はなんとか形になっていますが、今後、「敵」「アイテム」など、これまでとは違ったオブジェクトが登場した時に、またおかしくなりそうな予感がします。

2013-5-7-ooklk

マリオを大きくする

アンカーポイントをスプライト(画像)の中心にもっていっているので、マリオが大きくなった時に、色々おかしくなりました。 色々付け加えて、なんとか見えるようになったと思います。

スクリーンショット 2013 05 07 23 04

今後

今後、実装したいこと。

  • はてなボックスの実装:アイテムが出るようにしたい。
  • 敵オブジェクトを作成
  • マリオの操作性:ボタンや動き(慣性などを実装)
  • マリオが死んだ時のアクション