cocos2d-iPhoneとSpriteBuilderでゲームを1週間で作ろうSpriteBuilderとcocos2dを使ったゲーム開発もついに最終回です!長い間お疲れ様でした!今回は、物理演算を使って当たり判定を導入し、ポイントのカウントもします。最後なので少し書くコードの量が多目ですが、スクリーンショットやサンプルコードを見ながら頑張って実装してみてください。前回までソフトをインストール。主人公をつくる物理演算を導入する主人公と背景を動かす主人公を飛ばす障害物を設置する当たり判定の実装Obstacle.mにcollisionTypeを設定します。TRUE;}[/code]ここで設定した「level」という名前は、パイプや地面といったキャラクターが触れたら死ぬオブジェクトすべてに適応します。続いてMainScene.hを編集します。CCPhysicsCollisionDelegateを実装します。このデリゲートはふたつのオブジェクトが衝突した際に呼ばれます。<CCPhysicsCollisionDelegate>@end[/code]先ほどObstacle.mでも上下のパイプに当たり判定の設定(@levelで指定)をしましたが、MainScene.mでも同様に主人公と地面に対して当たり判定設定を行います。didLoadFromCCBに追記していきましょう。タッチ操作可能にする。@"hero";}[/code]続いて、SpriteBuilderでの設定に移ります。上下のパイプを選択し、物理演算を可能にします。Dynamic→Staticに変更します。最後に衝突時の処理を実装します。TRUE;}[/code]それではビルドして確認してみましょう。Over」とログを出します。障害物にあたった際の動きを確認できたので、今度はゲームオーバーとリスタートのしくみを実装します。画面が揺れるリスタートボタンが表示されるリスタートボタンを押したら、ゲームがスタートするSpriteBuilderで、リスタートボタンを設置します。コネクションとセレクタを設定します。あとでリスタートボタンが押された時に反応するようXcode側でも設定します。最後に位置を中央に設定し、表記をRestartに変更します。Visibleのチェックを外し、見えないようにします。リスタートボタンは、ゲームオーバーになった時に表示されるようにします。Xcodeを開き、MainScene.mに追記していきます。リスタートボタン}[/code]つぎに、衝突時の処理をするメソッドに、リスタートボタンを表示させるように設定します。TRUE;}[/code]最後に、リスタートの処理を実装します。replaceScene:scene];}[/code]これでリスタートが実装できました。このままではゲームオーバー後に地を這いながら進んでしまっています。ゲームオーバー後はスクロールが止まるよう修正しましょう。ゲームオーバーの判定をする変数と、スクロールスピードを格納する変数を新たに宣言します。スクロールスピード}[/code]MainScene.mでscrollSpeedと書いた箇所はすべて_scrollSpeedに置き換えます。定数宣言をコメントアウトします。障害物と次の障害物の距離[/code]さらに、didLoadFromCCBにスクロールスピードを追記します。タッチ操作可能にする。80.f;}[/code]続いてゲームオーバー時に実行されるメソッドを作成しましょう。TRUE;}[/code]ゲームオーバー時にはタッチに反応しないように修正します。0.f;}}[/code]これで、ゲームオーバー時にストップするようになりました。スコアを表示して完成!いよいよ完成です。最後に、スコアを表示するようにしましょう。SpriteBuilderで画面上にラベルを設置します。位置を調整して、表記を「0」に、サイズを50にします。続いて、コネクションの設定をします。_scoreLabelと記入して下さい。Obstacleを開き、パイプとパイプの間においてあるノードに対して、カスタムクラスとしてGoalと名前をつけます。物理演算を可能にして、Staticにチェックを入れます。続いてXcodeに移り、Goalクラスを作ります。Goal.mにメソッドを追加します。TRUE;}[/code]続いて、MainScene.mに変数を追加します。ポイント表示用のラベル}[/code]そして、これでほんとうに最後。ゴール時のメソッドに追記をします。TRUE;}[/code]おつかれさまです!以上でFlappuFlyの完成です!SpriteBuilderとcocos2dを使ったiphoneアプリ開発講座、いかがでしたでしょうか。私も現在、SpriteBuilderを使ってゲームアプリを開発しています。cocos2d-iPhoneとSpriteBuilderでゲームを1週間で作ろうSpriteBuilderをつかって、障害物を設置します。障害物の上下の高さをランダムにして出現させます。みためだけだと、ほぼ完成と言えるような状態になります。前回までソフトをインストール。主人公をつくる物理演算を導入する主人公と背景を動かす主人公を飛ばすSpriteBuilderで障害物オブジェクトを作るSpriteBuilderで新しくファイルを作ります。Nodeを選択し、名前はObstacle.ccbとします。続いて、作ったObstacle.ccsに画像やNodeを追加していきます。Obstacle.ccsを開きましょう。続いて、画像を置いていきます。次に、CCNodeを設置します。位置やサイズはこの後に設定するので、とりあえず置いてみてください。RootとなるCCNodeのサイズを調整します。(最後に追加したCCNodeではありません。高さ568と指定します。次に、pipe_topの位置を調整します。Positionを左上に指定し、Xを50「%」、Yを128に指定します。pointのx,yを0.50と0.00にします。同様にpipe_bottomの位置も調整します。Positionを左上に指定し、Xを50「%」、Yを228に指定します。pointのx,yを0.50と1.00にします。最後にカウント用のCCNodeの設定です。Positionを左上に指定し、Xを22、Yを574に指定し、サイズを幅36と高さ790にします。それではこのObstacle.ccbを保存し、MainScene.ccbの上に設置してみましょう。上図のように設置できることが確認できたら、設置した障害物を一度削除します。障害物の設置は、SpriteBuilder上ではなく、Xcodeで行います。それではSpriteBuilderでPublishしたあと、Xcodeに移りましょう。障害物を格納するための配列を作成します。障害物を格納する配列}[/code]続いて、定数を追加します。障害物と次の障害物の距離[/code]最初の障害物の座標と、障害物と障害物の間の距離を定義します。続いて、障害物を生成するメソッドを作成します。addObject:obstacle];}[/code]CCBファイルを読み込んで障害物オブジェクトを生成し、先ほど定義した距離の分だけ離して配置しています。障害物生成メソッドは作成したので、最初の障害物だけ設置しましょう。didLoadFromCCBに以下を追加します。タッチ操作可能にする。spawnNewObstacle];}[/code]これで3つの障害物を設置することが出来ました。それでは、障害物が永遠に出続けるようにアップデートメソッドを更新します。spawnNewObstacle];}}[/code]障害物の位置をランダムにする障害物をX軸上に規則的に配置することができたので、今度は障害物のY軸の位置がランダムになるようにしましょう。そのためには障害物のクラスを作成する必要があります。ClassにObstacleと記述します。Connectionの設定も行いましょう。上側のパイプは_topPipe、下側のパイプは_bottomPipeとします。保存してPublishしたら、Xcodeでの作業に移ります。Xcodeでは、新しいクラスを作成します。CCNodeのサブクラスとしてObstacleを作成しましょう。Obstacleが作成できました。続いて実装をしていきましょう。3.5インチでも4インチでも大丈夫なよう定数を調整しています。