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

きょこみのーと

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

Cocos2d-xでRPGツクールVX規定サイズのキャラチップ表示

Cocos2d-x C++

はじめに

以前AndEngineでクォータービューのSRPGを作っていたのですが、風呂敷を広げすぎて収集がつかなくなり約6割の完成度のまま放置中です。

仕事でCocos2d-xを使い始めたことをきっかけに今一度、風呂敷を締めなおしてSRPGを作ろうと思っています。

  • 俯瞰ビューのSRPGで独自描画はやらずTiled Map Editorを使う(クォータービューとか素材が少ないのはやめる)
  • 画面数は最小構成で基本的にCocosBuilderを使う
  • ノベルパートは顔グラのみで立ち絵とか欲張らない
  • 基本的なシステムは、初期のファイアーエムブレムをベースにする
  • Cocos2d-xとC++自体は、ほぼ経験ないので勉強しながらといういつものパターン

バージョンなど説明

Tiled Map Editorの使い方とかは、 次回RPGツクールのマップチップを使ってみようと思いますので、そのときに詳しい使い方を記載しようかと思います。

f:id:kyokomi:20130928155603p:plain

参考書籍の紹介

ソースコード自体は、書籍内にすべて記載されているので本だけでアプリを完成させられる。 C++経験がなくてもさくさくすすめると思うが、C言語とかJavaとか他の言語でいいのでプログラミング経験自体はないと厳しいと思う。 CocosBuilderの説明はかなり詳しいので、利用予定の方にはおすすめ。

開発レシピ本、TiledMapEditorに関してちょこっと触れてあったので買いました。 実際にアプリを作った際のノウハウが濃縮してあるので、ある程度Cocos2d-xに慣れてきた人は読んでみると新しい発見や開発効率がアップすると思う。

RPGツクールVX規定サイズのキャラチップを表示

f:id:kyokomi:20130928155600p:plain

画像提供元:臼井の会 素材支部(http://usui.moo.jp/rpg_tukuru.html )

いつもお世話になってますm( )m

こいつをSpriteFrameで表示したいのです。 ソースでガリガリやってもいいけど、TexturePacker(http://www.codeandweb.com/texturepacker)で作った画像と同じように扱いたいので、plistを作成します。

以下githubに作成したplistがあります。 アクターのactorの数字のところをアクター毎に変えてplistを用意すればいい感じかと。

https://github.com/kyokomi/Cocos2dxSRPGQuest/blob/master/Resources/actor4.plist

作成したplistをSceneで読み込んで表示する。

GameScene.cpp

SpriteFrameCache::getInstance()->addSpriteFramesWithFile("actor4.plist");
Sprite* pActorSprite = Sprite::createWithSpriteFrameName("actor_4_left_2.jpg");
pActorSprite->setPosition(Point(winSize.width * 0.5, winSize.height * 0.5));
pActorSprite->setTag(kActorTag);
this->addChild(pActorSprite);

f:id:kyokomi:20130928155609p:plain

実機で動かしてみると線がチラつく現象が起きた

シミュレーターは問題ないのになーと思って彷徨っていたら同じ問題を解消している方がいたので参考にしてみると見事なおりました。

参考URL:

5.1さらうどん cocos2d-xのCCTMXTiledMapで表示が崩れた時の対処法(http://giginet.hateblo.jp/entry/2013/06/10/031722

ありがとうございます!

AppDelegate.cpp

 bool AppDelegate::applicationDidFinishLaunching() {

    // initialize director
    Director* director = Director::getInstance();
    EGLView* eglView = EGLView::getInstance();

    // チラツキ対策
    Director::getInstance()->setProjection(Director::Projection::_2D);

    /* 〜省略〜 */
}

ccConfig.h 90行目付近

/* 〜省略〜 */
#ifndef CC_FIX_ARTIFACTS_BY_STRECHING_TEXEL
// TODO: add 2013/09/28 チラツキ対策
#define CC_FIX_ARTIFACTS_BY_STRECHING_TEXEL 1
//#define CC_FIX_ARTIFACTS_BY_STRECHING_TEXEL 0
#endif
/* 〜省略〜 */

というわけで、じわじわ作っていきます!!