読者です 読者をやめる 読者になる 読者になる

21世紀に捧げる

アプリ個人開発・ものづくり、主に技術系の内容をお送りします。

【ゲーム開発】SpriteBuilderのチュートリアルでなんちゃらバードらしきものを作ろう#4


スポンサードリンク
 

こんにちは。

SpriteBuilderのチュートリアルもそろそろゴールが見えてきました。

コードの入力です。
今回でサンプルプログラムは終了です。
最後までやればチュートリアルのサンプルプログラムが動きます。

f:id:for21:20140419221025j:plain
photo credit: cindy47452 via photopin cc


6.Xcodeにコードを入力する。

Xcodeのプロジェクトファイルを開きます。

f:id:for21:20140411095440p:plain

SpriteBuilderの設定をXcodeで読み込めるように

クラスの定義を行います。

f:id:for21:20140411103753p:plain

f:id:for21:20140411104752p:plain

f:id:for21:20140411104957p:plain

f:id:for21:20140411110323p:plain

コードを書いていきます。

まずは"Level.h"から。

SpriteBuilderで宣言したNodeをXcode側でも宣言します。

@interface Level : CCNode
{
    CCNode* _physicsNode;
    CCNode* _launcher;
}

_physicsNodeは地面やバードに崩されるアイテムなどに使いました。
_launcherは砲台に使いました。

つづいて"Level.m"です。

#import "Level.h"

@implementation Level
-(void)launchBird:(id)sender
{
    //Calulate the rotation in radians
    float rotationRadians = CC_DEGREES_TO_RADIANS(_launcher.rotation);
    
    //Vector for the rotation
    CGPoint directionVector = ccp(sinf(rotationRadians), cosf(rotationRadians));
    CGPoint ballOffset = ccpMult(directionVector, 50);
    
    //Load a ball and set its initial position
    CCNode* ball = [CCBReader load:@"Bird"];
    ball.position = ccpAdd(_launcher.position, ballOffset);
    
    //Add the ball to physics node
    [_physicsNode addChild:ball];
    
    //Make an impulse and apply it
    CGPoint force = ccpMult(directionVector, 50000);
    [ball.physicsBody applyForce:force];
}
@end

実行してみましょう!

シミュレータが起動して
SpriteBuilderで作成したゲーム画面が表示されます。

f:id:for21:20140411120550p:plain

砲台がSpriteBuilderで設定した角度で動いています。
また、横スクロールの設定にしていたので横スクロールできます。

砲台が埋め込まれた岩の部分をクリックすると。。。
バードが発射されます。

f:id:for21:20140411120948p:plain

右側のアイテムにバードが当たると
そのアイテムたちは崩れていきます。。。

どこかでみたことのあるゲームのようなものができました。

以上でチュートリアルの内容は終了です。

いかがでしたか?
無事完成できたでしょうか?

アイテムの配置、動きをつける、物理計算等々が
非常に簡単にしかも視覚的に行うことができます。

素晴らしいツールがあるものです。

本格的なゲームに仕上げていくためには
まだまだ使い込んでいく必要があると思います。

今回はここまでにします。
勉強したら詳しい使い方の説明ができるかもです。
(先にCocosBuilderの勉強をするので期待はしないでください)

長々とおつきあい頂きありがとうございました。