「cocos2d」でマリオのようなアクションゲームを作りたい7回目

ブログの更新は少なかったですが、前回から、結構色々作ってました。

今日までに実装したこと

ボタンの修正

前回のエントリーで書いた通り、「ボタンが押されたままの状態が続くこと」がありましたが、これを修正しました。 原因は、ccTouchendedの所が問題で、ボタンを押した処理がキャンセルできていなかったことでした。

オブジェクトの衝突判定

これは現在も結構弄っている部分なのですが、同じく前回のエントリーで書いた所を中心に修正をしました。 キャラクターをアニメーションさせている関係で、どうしてもsprite.contentsize.widthやsprite.contentsize.heightがバラバラになってしまうので、上手くタイルレイアーやオブジェクトととの衝突が上手く行きませんでした。 衝突判定に関しては、現在も少しおかしい部分があります。

ノコノコとパックンフラワー

マリオの敵キャラクターである「ノコノコ」と「パックンフラワー」を作成しています。 「ノコノコ」に関しては、「甲羅を持つ」ことは実装できてませんが、その他の部分はなんとか見れるレベルまでに実装できたような気がします。

Nokonoko standing
Flower000

CCSceneが切り替わる時に、独自のエフェクトを作成した

これは、今回のアクションゲーム関係なく、一度実装をしたかったことです。 任天堂のマリオやゼルダで、「円が小さくなってフェードアウトする」「円が大きくなって画面が出てくる」。このようなエフェクトが多く見られます。cocos2dでは、このようなエフェクトがないので、一からCCLayerを使って考えてみました。 まだ若干不自然な部分があるますので、修正の必要があります。

2013 5 20 ddee

インフォメーションレイアーの設置

ゲームレイアーとは別に、点数やコインの数を表示する「インフォメーション」をレイアーで実装しました。 文字は、フリーフォントを使っています。

最初の画面を作成

スーパーマリオブラザーズ風に作成しました。

2013 5 20 ddees

マントマリオの作成

スーパーマリオワールドに出てくる「マントマリオ」を作成しました。 ただ、飛べません。マントを回せません。

SMW
SMW2

ジャンプから降りてくる時に、重力を変える作業が思いのほか難しかったです。なお、ジャンプせずに重力で落ちる時に、重力の変更はできますが、上手くアニメーションが切り替わらないので、これを直さないと不自然です。

ステージの移動

スプライトの無いあるオブジェクトにふれると、ゲームが終わり、指定されたタイルマップに行けるようにしました。 しかし、ただ移動できるだけなので、「ステージ名」を表示するなり、少し時間を置くなりしたほうがいいでしょう。後は、インフォメーションレイアーの情報がリセットされてしまっているのでこれも修正する必要があります。

動画

今後

現在は、アプリ作成と言うよりも、cocos2dでどのようなことができるかを実験している感じで、色々している状況です。ですので大体大枠の部分ができればと思っています。 これを、個人的に作成しているcocos2dとcocos2d-xの初心者向けのサイトに載せて行きたいと考えています。