前回に引き続き、Tiledでつくったマップの移動処理を考えていました。この前は、CCLayerをSlideさせて入れ替えをしていましたが、今回は場面そのものが変わったときの移動処理です。
例えば、フィールドから洞窟、階段での移動、ワープなどの移動処理をする際に、Slideを使うと描写がおかしくなってしまいます。もっと別のやり方を考えないといけません。
FadeによるCCLayerの移動処理
CCSceneの移動ではCCTransitionFadeクラスという便利な方法があるので、簡単にフェードアウト・フェードインが実装できます。これに似たような処理をCCLayerの移動でも使いたいです。
考え方として
初心者の私が簡単に思ったような処理のコーどを書くことはできないので、いつも、ノートにどういった処理をしていけばいいのかを手書き(メモみたいなもの)で書いていきます。
今回の処理の場合はだいたいこんな感じで考えました。
これを実際のコードにしていきます。
[c] //真っ黒いCCLayerを用意します。 CCLayerColor *fadeLayer = [CCLayerColor layerWithColor:ccc4(0,0,0,0)]; [self addChild:fadeLayer z:10 tag:TagFadeLayer];
//フェードインさせたいのでCCActionのCCFadeInを使います [fadeLayer runAction:[CCSeqence actions:[CCFadeIn actionWithDuration:0.5f], [CCCallFunc actionWithTarget:self selector:@selector(nextStep)], nil]];
[/c]
こんな感じで考えていくと、思ったような処理ができます。(最初はできませんが、むりくり思った処理に持っていく)
それで今回できたのはこんな感じになりました。
cocos2dの日本語表示
上記の動画で日本語を表示させています。 「iPhone&iPadゲームプログラミング」本によると、CCLabelBMFontクラスを使う方法よいと書いてあります。 日本語のフォントを用意して以下のように使います。
[c] //JapanFont2.fntのように日本語のフォントデータを用意する。
CCLabelBMFont *scoreFont = [CCLabelBMFont labelWithString:@"あいうえお" fntFile:@"JapanFont2.fnt"]; scoreFont.position = ccp(200,200); [self addChild:scoreFont z:1];
[/c]
最後に
今日は、この移動処理と日本語表示について色々やっていました。ただ移動処理についてはまだまだ改善の余地があります。 しっかりと直していきたいです。 日本語を表示することはできますが、日本語の関しては、本当にこのゲームに必要かどうかも含めて考えていきます。
今日もそうなのですが、次に何をしたらいいのかわからずに手が止まっている時間が多いですので、まえもって何が必要か考えてやっていきたいと思います。
cocos2dで作る iPhone&iPadゲームプログラミング Steffen Itterheim,畑 圭輔,坂本 一樹,加藤 寛人,高丘 知央,株式会社 クイープインプレスジャパン 売り上げランキング : 102988Amazonで詳しく見る |