assaulter's diary

最近はバイクブログと化している...

cocos2dでシューテイングゲームを作る

cocos2使い出して3week位でしょうか?なんとなく自分の中では使い方わかってきた気がするのでメモを残します。

先に現在の進捗を報告すると

  • 自機は、タップした場所に一定の速度で移動しようとする
  • moveGestureにも対応。
  • 敵を倒すとアイテムを放出→3種類のパネルに応じて自機の発射イベントが変わる
  • 画面上部に(今のところ仮置きしてる)ボスがおり、そいつに体当たりするとGameOver

だいたいこんな感じでソースコード

こちら:https://github.com/assaulter/ShootingGame

クラス図はこんな感じ

f:id:assaulter:20130310193437p:plain

前置きはこのくらいで

勉強した順番としては

  1. iOS Game Development with Cocos2D - http://www.slideshare.net/Greenwell/iphone-and-ipad-game-development-with-cocos2d
  • チュートリアルやりつつコレ読めば、だいたいできることは分かると思います。
  • あとはひたすら遊ぶ感じ

現時点の課題

  • UnitTestやろうとするとライブラリ関係が相当めんどくさい。
  • Kobold2Dの方が環境構築とか楽だった - 参考:Kobold2Dで始めるゲーム開発 - http://www.slideshare.net/giginet/devsap
  • CCLayerの位置づけがあやふや(CCLayerについては下で軽く説明します)

気を取り直して、解説っぽいこと

上のスライドのIOS Game...で説明されてますが、Cocos特有のクラスとして以下の3種類があります

  • CCScene - いわゆるゲームの1シーンを定義する(ex. メインメニュー画面、Stage1でそれぞれ別インスタンスのCCSceneを用意する)。CCLayerを管理する。
  • CCLayer - 正直試行錯誤してる段階なのですが、今のところはCCSpriteに対して描画命令を行うのが主な仕事だと理解してます。レイヤーの名前の通り、画面を複数のレイヤーで構成するのが一般的みたいです。
    僕の場合には、例えばアイテムSprite群を管理するItemLayer等、意味としてまとまりのあるSpriteのグループを管理する役割として使ってます。
  • CCSprite - ゲームの中に出てくる描画対象を定義(自機、敵、弾)基本的には命令されるだけの立場なので、メンバ変数とそれに対する操作メソッドを持つ位?

次回予告

次回からはゲームの一部のシーンを切り出して、それをどう実装したかについて書いて行きたいと思います。

# GitHubで軽く検索したのですが、そもそもCocos2Dのソースを上げてる人少ないですね。。。あったとしてもサンプルに毛が生えた程度の物が多いので、9leapからソース落として読もうかな。