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

きょこみのーと

元六本木でGo書いてました。今はVRでGo書いてます。

Cocos2d-x Project作成。脱HelloWorld!!

今回の概要

前回Hello Wolrdまでやりましたが、ではそこから自分用のプロジェクトにするのには? というのをやりたいと思います。

  • project作成
  • 不要なファイルの削除
  • iOSAndroidで起動

projectの作成

これは前回の復習になりますね。 クロスプラットフォーム開発をするので、今回もproject-creatorを使います。

$ cd /Applications/cocos2d-x-2.1.4/tools/project-creator/
$ ./create_project.py -project TouchGameProject -package com.kyokomi.touchgame -language cpp

xcodeで開いてみる

Open Other...を選択

f:id:kyokomi:20130825131310p:plain

作成したプロジェクトのproj.iosフォルダにあるxcodeプロジェクトファイルを選択

f:id:kyokomi:20130825131315p:plain

とりあえず起動してみる

f:id:kyokomi:20130825131304p:plain

あっけなく起動しました。

f:id:kyokomi:20130825131300p:plain

不要なファイルを削除

以下のファイルを削除する

  • HelloWorldScene.h
  • HelloWorldScene.cpp

f:id:kyokomi:20130825131131p:plain

GameScene.cppとGameScene.hを作成

f:id:kyokomi:20130825131122p:plain

f:id:kyokomi:20130825131135p:plain

f:id:kyokomi:20130825131126p:plain

//
//  GameScene.cpp
//  TouchGameProject
//
//  Created by kyokomi on 2013/08/25.
//
//

#include "GameScene.h"

using namespace cocos2d;
using namespace std;

CCScene* GameScene::scene()
{
    CCScene* scene = CCScene::create();
    GameScene* layer = GameScene::create();
    scene->addChild(layer);
    return scene;
}

bool GameScene::init()
{
    if (!CCLayer::init())
    {
        return false;
    }
    return true;
}

//
//  GameScene.h
//  TouchGameProject
//
//  Created by kyokomi on 2013/08/25.
//
//

#ifndef __TouchGameProject__GameScene__
#define __TouchGameProject__GameScene__

#include "cocos2d.h"

class GameScene : public cocos2d::CCLayer{
public:
    virtual bool init();
    static cocos2d::CCScene* scene();
    CREATE_FUNC(GameScene);
};

#endif /* defined(__TouchGameProject__GameScene__) */

エラーになっているAppDeleage.cppを2箇所修正

2行目くらい

#include "HelloWorldScene.h"

     ↓

#include "GameScene.h"

29行目くらい

CCScene *pScene = HelloWorldScene::scene();

     ↓

CCScene *pScene = GameScene::scene();

起動してみる

f:id:kyokomi:20130825130317p:plain

真っ暗ですがとりあえず起動。

GameSceneに背景作成の処理を追加

void GameScene::makeBackground()
{
    // 画面サイズを取得
    CCSize winSize = CCDirector::sharedDirector()->getWinSize();
    // 背景を生成
    CCSprite* pBg = CCSprite::create("World.png");
    // デフォルトのアンカーポイントは(0.5, 0.5)画面の中心
    pBg->setPosition(ccp(winSize.width * 0.5, winSize.height * 0.5));
    this->addChild(pBg);
}

AppDelegate.cppに縦横比を揃える処理を追加

表示する画像が544 x 416なので。

bool AppDelegate::applicationDidFinishLaunching() {
    
    // 〜省略〜

    // 横幅を基準に画面サイズを調整する
    //    pDirector->setContentScaleFactor(544.0 / pDirector->getWinSize().width);
    // 縦幅を基準に画面サイズを調整する
    pDirector->setContentScaleFactor(416.0 / pDirector->getWinSize().height);
    
    // 〜省略〜
}

f:id:kyokomi:20130825130321p:plain

Android側で起動

Android.mkを修正します。 HelloWorldScene.cppを消したのをこっちにも反映します。

場所

/Applications/cocos2d-x-2.1.4/projects/TouchGameProject/proj.android/jni/Android.mk

修正内容

LOCAL_SRC_FILES := hellocpp/main.cpp \
                        ../../Classes/AppDelegate.cpp \
                        ../../Classes/GameScene.cpp

f:id:kyokomi:20130825130325p:plain

というわけでとりあえず脱HelloWorldしたわけです。