【勉強】「cocos2d for iPhone レッスンノート」で得たことを自作アクションゲームへ反映(その4、連続アニメーションなど)


「cocos2d for iPhone レッスンノート」で得たことを自作アクションゲームに適用させて改良する記録です。

cocos2d for iPhoneレッスンノートcocos2d for iPhoneレッスンノート
(2011/09/22)
加藤寛人、佐藤伸吾 他

商品詳細を見る


目次とサンプルのダウンロードはこちら


18日(金)、20日(日)、21日(月)は次の7. 9.のプログラム上のひな形を作っていました。
→適用済、→途中、無印→まだ、色なし→前回分)

◯1. 敵クラス、主人公クラスを作り、それで出現させるようにする
△2. 乱数(CCRANDOM_0_1を使う)を発生させて最初の登場位置、スピードを調整する
◯3. 移動はupdateメソッドで行うようにする(最初から書くならばこちらの方が
     楽だと思われるから)
△4. アイコン同士の衝突時はパーティクルで衝突を表現する
 5. 衝突するたびに微妙に大きくなっていく(その方がゲームとしてスリルがあるはず)
△6. 主人公とアイコンが衝突したときは画面を揺らす表現をする
7. 難易度別ステージ(シーンで作る)を設けてクリアできるようにする
 8. サウンドを入れる
9. オープニングを入れる


(1)全体の流れについて
最初の計画ではオープニングだけでしたが、エンディングのシーンも入れることにしました。
それによりクラスの構成を次のようにしました。



このゲームは本の第4章のシューティングゲームを参考にしてきたのですが、このシーンの遷移については第3章のノベルゲームを参考にしました。
ゲームを始めると、オープニング(OpeningScene)・ゲームのメイン(GameScene)・エンディング(EndingScene)の3つのシーンがあり、各シーンの中でさらに場面が変わるという構成です。
オープニング・エンディングともキャラのアニメーションでやろうと思っています。
(今のところは仮のナレーションとセリフだけですけど)
ScreenshotSimu_53.png

(2)難易度別ステージの遷移について
当初難易度別ステージはそれぞれをシーンで作ろうかと思っていたのですが、ゲームのメイン(GameScene)ですべて行うようにし、敵の数や背景画像を変えることで対応するようにしました。
ステージの遷移は各ステージの目的を達成したら扉が開いて次のステージに行くという、かなりベタな設定です!
その方が分かりやすいでしょうからね。
次のステージにキャラが動いていくのはアニメーションで表現しようと考えています。
(※画面の画像はすべて仮のものです。)
ScreenshotSimu_55.png

(3)別スプライト間の連続アニメーションについて(未解決)
上の(1)と(2)のためには、あるスプライトAのアニメーションが終わったらそれを受けて別なスプライトBのアニメーションを開始するという設定が必要になってきました。
例えば敵が消えたら扉が開くというようなものです。

同じスプライトAで連続してアニメーションをする方法はメジャーです。

<SpriteAがact1(移動)の後、act2(拡大)を行う方法>
id act1 = [CCMoveBy actionWithDuration:1.0f position:ccp(50,0)];
id act2 = [CCScaleBy actionWithDuration:0.5f scale:2.0f];
id seq = [CCSequence actions:act1, act2, nil];
[SpriteA runAction:seq];


ところがスプライトBがAの後にアニメーションする方法についてはすぐに見つけられませんでした。。。
いろいろ探した結果、次のページが見つかりました。
本当どうもありがとうございます。
 →別々対象にACTIONを順番に動かせる方法 | SuperSuRaccoon's World

次のようにCCDelayTimeを使うことで実現できました。

<SpriteAのアニメーションの後、SpriteBがアニメーションを始める方法>
[SpriteB runAction:[CCSequence actions:
    [CCDelayTime actionWithDuration:1.5f],
    [CScaleBy actionWithDuration:2.0f scale:3.0f],
    nil]];


CCDelayTimeで実行を遅らせる遅延時間を設定しています。
SpriteAのアニメーションはact1で1.0秒、act2で0.5秒の合計1.5秒かかるのでこれを遅延時間に設定しました。

ただこの方法だと連続するスプライト数が増えると最後の方のものの設定が面倒ですね。
また途中で時間を変えるとその後のものすべての時間を変える手間も発生してしまいます。

他の方法としてCCCallFuncを使って外部メソッドを呼び出す方法もあるみたいですが、どのように実装すれば連続アニメーションになるか今のところ謎です。。。
今後の課題ですね。。。

こういう連続アニメーションはゲームなら多用するわけできっといい方法があるはずなのですが。
その辺は開発者側としては公開したくはない秘密といった感じなのでしょうか?!


課題が山積みですが(大泣)、いつもやっていればいずれひらめくでしょう(←楽観的)
キャラのイラストの方もがんばりたいです。


↓この記事が参考になったら拍手をクリックお願いします。今後のブログ作りに役立てたいので。
関連記事

コメントの投稿

非公開コメント

プロフィール

てぃー

Author:てぃー
詳しい自己紹介:こちら
Twitter:@teapipin


follow us in feedly 
にほんブログ村 IT技術ブログへ にほんブログ村 PC家電ブログへ
現在の閲覧者数:

ブログ内検索
今日のアクセス数の多い記事
カレンダー

08月 | 2017年09月 | 10月
- - - - - 1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
過去記事ダイジェスト
お知らせ
ツイッター分析の分析結果が新潟大学教育学部の論文に引用
教育の実証研究の場でも高く評価!

ツイッター分析の分析結果が和歌山大学防災研究教育センターの論文に引用
防災の研究において評価!

2015年版ツイッター分析(世界編)が始動!
今回は世界の国別・言語別ツイートを分析!

ツイッター分析の分析結果が慶應義塾大学有名教授の研究論文などに引用
文系の研究までも制覇!

Interval Timer EX
有名雑誌「Mac Fan 2015月2月号」に「インターバルタイマーEX」が3度目の掲載!ポモドーロテクニックに有効!

自作Macアプリ3部作が2014年 Vector 年間ダウンロードランキング Mac トップ100にすべてランクイン

TimeCalcを公開しています!
時間計算、年齢計算、学歴欄作成など。

ツイッター分析の分析結果が人工知能の研究に!
ブログが学会発表で引用されました。

今まで開発したiPhoneアプリのソースコードを公開しています!
勉強に役立ててください。


2013年 Vector 年間ダウンロードランキング Mac トップ100に「デジカメ変更日を撮影日に一括変更 for Mac」と「インターバルタイマーEX」がランクイン

Interval Timer EX
有名雑誌「Mac Fan 2013月4月号」に「インターバルタイマーEX」が2度目の掲載!!

リアルタイムツイッター地図
リアルタイムツイッター地図を公開しています!
位置情報付きツイートをリアルタイムに表示します。

新たなツイッター分析としてイベントツイート分析を行っています!

2012年8月1日(水)開催の「Twitter勉強会」で発表
ツイッター調査:約173万ツイートを調査して分かったTwitterの利用動向 #twtr_hack from teapipin


Interval Timer EX
有名雑誌「Mac Fan 2012月3月号」に「インターバルタイマーEX」が掲載!!



 

はてなブックマークの人気記事
ツイート&いいね!ランキング