GameSceneの読み込みから背景の表示まで復活

「cocos2d for iPhone レッスンノート」のサンプル「Asteroid」を参考に、ゲーム制作している件です。
前回、Kobold2dのテンプレートEmpty-ProjectをiPhoneのアプリ制作用に下準備しました。
今回は、「Asteroid」からGameScene.h/mを読み込んで、背景の表示まで復活させます。

130622 0001
まず、前回作ったプロジェクトへ「cocos2d for iPhone レッスンノート」のサンプル「Asteroid」のGameScene.h/.mをAdd Files toしました。
ついでに、読み込んだGameScene.h/.mを選択して右クリックメニューのNew Group from Selectionでフォルダを作り、名前をScene & Layersしておきます。作業効率を上げるチョットしたTipsですね。

次に、GameScene.h/.mの中身を消していきます。

#import 
#import "cocos2d.h"

@interface GameScene : CCScene {
}

//シングルトンオブジェクトを返すメソッド
+ (GameScene *)sharedInstance;

@end

こちらは、GameScene.h。

#import "GameScene.h"
//
//
@interface GameScene ()
@end

@implementation GameScene

static GameScene *scene_ =nil;

+ (GameScene *)sharedInstance {
    if (scene_ == nil) {
        scene_ =[GameScene node];
    }
    return scene_;
}

- (id)init {
    self =[super init];
    if(self){
    }
    return self;
}
@end

こちらは、GameScene.m。もう、気持ち良いくらいバッサリ消しました。

次に、config.luaでFirstSceneClassNameをGameSceneにします。これについても通った道です。サクサク進みます。

130622 0001
この状態でRunしてみます。エラーは出ません!バッチリ真っ黒ですね。
まぁ、ここでエラーが出たら困りますが。。。

次に、背景を表示します。
まずは、iPhone3.5インチと4インチの違いを吸収する模様を出し分けます。これも過去に通った道ですね。

#import <Foundation/Foundation.h>
#import "cocos2d.h"

@interface GameScene : CCScene {
}

//シングルトンオブジェクトを返すメソッド
+ (GameScene *)sharedInstance;

+(CGRect) screenRect;

-(BOOL)is4Inch;

@end

GameScene.hに宣言を前のプロジェクトからコピペします。

static CGRect screenRect;

static GameScene *scene_ =nil;
+ (GameScene *)sharedInstance {
    if (scene_ == nil) {
        scene_ =[GameScene node];
    }
    return scene_;
}

- (id)init {
    self =[super init];
    if(self){
		CGSize screenSize = [[CCDirector sharedDirector] winSize];
        if ([self is4Inch]) {
            screenRect = CGRectMake(0, 44, screenSize.width, screenSize.height-44);
            //迷彩柄を加える
            CCSprite *superBack =[CCSprite spriteWithFile:@"camoBack.png"];
            superBack.anchorPoint =ccp(0, 0);
            superBack.position =ccp(0, 0);
            [self addChild:superBack z:1000];//一番⬆にしないと
        }else{
            screenRect = CGRectMake(0, 0, screenSize.width, screenSize.height);
        }
    }
    return self;
}

+(CGRect) screenRect
{
	return screenRect;
}

-(BOOL)is4Inch{//Retinaだったらtrue返す
    CGSize winSize=[[CCDirector sharedDirector] winSize];
    return (winSize.width==320.0f && winSize.height==568.0f);
}

GameScene.mで出し分けの実装と、画面が4インチかの判定メソッドを前のプロジェクトからコピペしました。

あと、模様の入ったpng画像も前のプロジェクトからAdd Files toします。

次に、背景を追加します。背景画像にはスプライトシートを使いたかったので、前のプロジェクトのものをコピペしました。
前のプロジェクトからbackground.h/mをAdd Files toします。あと、前のプロジェクトで背景画像用に作ったスプライトシートもAdd Files toします。

#import "background.h"

GameScene.mにbackground.hをインポートして、、、

- (id)init {
    self =[super init];
    if(self){
		// Enable pre multiplied alpha for PVR textures to avoid artifacts
		[CCTexture2D PVRImagesHavePremultipliedAlpha:YES];
        
		// Load all of the game's artwork up front.
		CCSpriteFrameCache* frameCache = [CCSpriteFrameCache sharedSpriteFrameCache];
		[frameCache addSpriteFramesWithFile:@"md.plist"];
        
		CCSpriteFrameCache* backgroundCache = [CCSpriteFrameCache sharedSpriteFrameCache];
		[backgroundCache addSpriteFramesWithFile:@"back_md.plist"];
        
        
		CGSize screenSize = [[CCDirector sharedDirector] winSize];
        if ([self is4Inch]) {
            screenRect = CGRectMake(0, 44, screenSize.width, screenSize.height-44);
            //迷彩柄を加える
            CCSprite *superBack =[CCSprite spriteWithFile:@"camoBack.png"];
            superBack.anchorPoint =ccp(0, 0);
            superBack.position =ccp(0, 0);
            [self addChild:superBack z:1000];//一番⬆にしないと
        }else{
            screenRect = CGRectMake(0, 0, screenSize.width, screenSize.height);
        }
        
        
		background* bg = [background node];
        if([self is4Inch]){//iPhone5出し分け
            bg.position =ccp(0, 44);
        }else{
            bg.position =ccp(0, 0);
        }
		[self addChild:bg z:-1];
    }
    return self;
}

initメソッドでbackgroundを配置します。

130622 0003
ここまででRunしてみて、ちゃんと表示されてホッとしました。

130622 0004
ちなみに、iOSシミュレーターを4インチにするのは、iOSシミュレーターを開いた状態のデスクトップメニューでハードウェア>デバイスから「iPhone (Retina-4inch)」を選べばOKですが、RetinaじゃないMacBookProで見ると画面が巨大過ぎです。
デスクトップメニューのウィンドウ>表示サイズで50%を選ぶと、3インチの画面と比べやすくなります。

背景は問題無し。次は、敵キャラを表示して動かすところまで復活します