Cocos2d v3 SpriteBuilderでできたもの

# 今回作るゲーム
今回はバルーンショットというゲームを作成する予定です。
もともと僕が作っている

![id995207358.png](https://qiita-image-store.s3.amazonaws.com/0/79216/c0a0da78-4bac-2257-9a1d-0594e953ba1e.png)
[Space Debris](https://itunes.apple.com/jp/app/id995207358)
というゲームの続編になります。

これをやっていただければどんなゲームを作ろうとしているか想像がつくかと思います。

# SpriteBuilderでできたプロジェクト
前回はCocos2dの導入を行いました。（※参考 [Cocos2d 導入編](https://qiita.com/syou007/items/9e6202a88495757dda5f)）
今回はバリバリ開発。。。の前にSpriteBuilderでできたプロジェクトの中身を確認していきましょう。

前回作った`ShootBalloon.spritebuilder`フォルダの中身を見ると`ShootBalloon.xcodeproj`がありますので、とりあえずこのファイルをXCodeで開きます。

## Sourceフォルダ
Sourceフォルダを見ると以下の箇所にAppDelegateができている事が確認できます。

![xcode1.png](https://qiita-image-store.s3.amazonaws.com/0/79216/3e7854b0-d0cd-b152-f6cc-8f9fd8cb4b73.png)

[前回](https://qiita.com/syou007/items/9e6202a88495757dda5f)はSwiftを選択してプロジェクトを作成したのですが、AppDelegateはなぜかObjective-cでできてしまいます。
これをSwiftに置き換えてもいいのですが、さほど使うものでもないので今回はこのまま進みます。

その下にある`MainScene.swift`はしっかりSwiftでできてますね。
MainScene.swiftにはまだ何も書かれていないので、今は無視します。この後の連載で重要となってくるファイルです。

### Cocos2dのデバッグ情報を出したい場合
```lang:AppDelegate.m
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    ....前略
    cocos2dSetup[@"CCSetupShowDebugStats"] = @(YES);

    [self setupCocos2dWithOptions:cocos2dSetup];
    
    return YES;
}
```
この記述をしておくと現在のFPSやSpriteの数などが画面左下に表示されます。
FPSはシミュレーターだと正確な値が出ないので、遅い場合は実機で確認してみてください。

### SwiftでAppDelegateを書く場合
AppDelegateは`CCAppDelegate`を継承して作成されています。
Swiftに置き換える場合はPbjective-cで作成されている`CCAppDelegate`を継承するようにして作成する必要がありますので、注意してください。
後述しますが、SpriteBuilderで作成されたプロジェクトには`Bridging-Header.h`が用意されているのでObjective-cのコードを呼ぶ時には困る事がないと思います。

### Objective-cからSwiftを呼び出したい場合
今後の連載で書きますが、AppDelegateからSwiftを呼び出したい場合は

```lang:AppDelegate.m
#import "ShootBalloon-Swift.h"
```

と定義すれば呼び出せます。
これはXCodeの

```
「Build Setting」
↓
「Swift Compiler」
↓
「Objective-c Generated Interface Header Name」
```

に定義されてます。
※これはCocoaプロジェクトでも同様です。

## info.plist
![xcode2.png](https://qiita-image-store.s3.amazonaws.com/0/79216/6e0168e4-ddbe-ca6f-5cf8-49b8e2a09f12.png)

Resourcesの中に定義されてます。
また同フォルダに「Icons」も用意されており、リリースする際に必要なアイコンの種類や起動時の画面が用意されています。
※2015/5/17 現在。`info.plist`が指定してるIconファイルが不正になっているため申請時にエラーが発生します。`info.plist`を書き直す必要があります。（後の連載で説明します。）

## SpriteBuilderが書き込むフォルダ
![xcode3.png](https://qiita-image-store.s3.amazonaws.com/0/79216/31d31254-344a-09c0-fd7a-34959207c6f5.png)

このフォルダが参照設定されており、SpriteBuilderからPublishするたびにここの中身が書き換わります。
今回はPublished-Androidは使いませんので参照を切っておいて構いません。

### SpriteBuiderは万能ではない？？
私の経験ですが、SpriteBuilderは万能ではありません。
SpriteBuilderで消したはずのファイルがXcodeプロジェクトの`Published-iOS`に入っている場合があります。
特にSpriteSheetを途中から導入した場合などには注意が必要です。

## Objective-CやCocoaPodsを使う場合
![xcode4.png](https://qiita-image-store.s3.amazonaws.com/0/79216/53075e5c-fa89-a3e6-6d4a-b7646dfeb1c2.png)

こちらに`Bridging-Header.h`ができてますので、こちらを使用します。
今はここに書かれている事だけを把握していればOKです。

# 次回のために
さて、次回からSpriteBuilderをいじって行きます。
そのための前準備を最後に行います。

SpriteBuilderの`File`→`Project Setting...`を選択します。

![setting.png](https://qiita-image-store.s3.amazonaws.com/0/79216/bb1c0792-fb14-02a1-a9e6-053239a921b1.png)

この画面のように設定してください。

iOSのphonehdなどのチェックを外してください。
Androidのチェックを外してください。

Default Scaling Fromを1xにしておいてください。（4xのままにする場合は４倍の画像を用意してください。）
OrientationをPortraitにしてください。
今回作るゲームは縦型です。

## この設定について
実は、この設定に関しては筆者はあまり詳しくない。
というのも、各端末に合わせた画像を用意してゲームを作った事がないためだ。
なので、誤っている場合やこうしたほうが良いなどがあれば教えていただけると助かる。

# XCodeの設定
![xcode-set.png](https://qiita-image-store.s3.amazonaws.com/0/79216/86e0b46d-1391-05f8-38d7-bb9c8e95b18e.png)

最後にXcodeの設定も縦型にします。
また、DeviceもiPhoneにします。
SpriteBuilderはユニバーサルアプリも作りやすいので、腕に覚えのある方はユニバーサルとしてチャレンジてもOKです。
ここではプログラムに注力するためiPhoneに固定します。

今回はここまでです。
次回からすぐに進めたいのですが、次回の冒頭ではCocoaPodsの導入から説明します。

# 次は
[CocoaPods](http://qiita.com/syou007/items/957dd2d9c3ff1b2a7c6d)の設定について書いてます。