【勉強】「cocos2d for iPhone レッスンノート」で得たことを自作アクションゲームへ反映(その3、動きについて)


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

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

商品詳細を見る


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


14日(月)から今日までは次の2.4.6.をがんばりました。
→適用済、→途中、無印→まだ、色なし→前回分)

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


※キャラの画像はまだ反映していません。
ScreenshotSimu_33.png
ScreenshotSimu_35.png

(1)クラスのメソッド構成の見直し
これらを作るためにまずクラスのメソッドの構成を見直しました。
本にあるシューティングゲームを土台にしているのですが、当たり判定メソッドcheckCollectionはEnemyからEnemyControllerに移し、敵同士の当たり判定を行うようにしました。
これは総当たりで当たり判定を行うため、Enemyでは他の敵のデータが取得しづらいためです。
EnemyControllerで行えばすでにある配列enemiesから高速列挙で取得すればいいわけですからね。

また、タッチ用のレイヤー(interfaceLayer)はbaseLayer内ではなく、baseLayerの上に置きました(つまりGameSceneにaddChild)。
矢印などの操作ボタンをinterfaceLayer上に置いており、自機がぶつかったときにボタンまでは画面が揺れないようにするためです。
異なる方法で実現することもできると思いますがこれが一番簡単かとこのようにしました。

(2)スピードについて
スピードについてはその1からの懸念事項でしたがやはり難しいです。
重力による等加速度運動を作ってみようとしたのですが、変数として重力加速度Gを設定したらなぜか複数の敵クラスのインスタンスで同じ値を参照することになってしまい、まるで惑星の連星運動のような動きになってしまいました。
変数Gをスコープを考慮せずに宣言していたのですが、別な敵クラスのインスタンスを引き継ぐなんてあり得るのでしょうか?
ふだん使っているVisual Basicとは勝手が違うので難しいです。
もう一度Objective-Cのクラスや変数のスコープについて学ぶ必要を感じました。

また動きは単に動いているという感じで安物のミニカーを動かす感じです。
質感のある高級な動きを目指したいものです。

(3)衝突の当たり判定とパーティクルについて
本のゲームでは当たり判定は「敵と実機(地面含む)」「敵とビーム」の2種類です。
一方、てぃーが作っているアクションゲームでは「敵同士」「敵と実機」「敵とビーム(剣)」となります。
つまり、「敵同士」が新たに加わるのですが、敵を画面によっては20個ほど出そうかと思っていてそのための当たり判定が大変です。。。
updateメソッドでCGRectIntersectsRect(2つの矩形(くけい)が重なればYESを返す)を使って判定をしているのですが、敵が3つ以上になると処理が重くなってしまいました。

ScreenshotSimu_51.png

本にも
 >当たり判定は、それについてだけで書かれた本もあるほどの深い話題です。
 >紹介した方法はあくまで1つの手法として考えてください。(214ページ)

とあったのでグーグルで「当たり判定」(衝突判定)を検索してみました。
それによるとだいたい次のようなことが大切であると分かりました。

・すべての物体で当たり判定を調べるのではなく、ある領域にのみ注目して調べる
・ベクトルの概念
・3Dの場合はさらに内積、外積


う~ん、確かに奥が深いですね(滝汗)
でもテーマとしてはおもしろそうです♪(←楽観的)
当たり判定については今後じっくりと勉強していきたいと思います。

ただいろいろ試してみたところ、今回の処理の重さは当たり判定を行う数が多いということよりも衝突時に出すパーティクルの処理によるようです。
パーティクルをやめれば処理は軽くなるのですがそれではゲームとしてつまらないですよね。
やっぱ、ゲームは見た目が大事ですから!!!
パーティクルの種類や表示時間を見直す必要が出てきました。


以上、動きについてやりましたが難しいですね。
こういう面倒なことはcocos2dが自動でやってくれればいいのに。。。
(もしかしたらそういうものがすでに用意されているかもしれませんが)
今回のことは微妙なチューニングを随時続けていき、いいアプリにしたいものです。
今後もまだ適用できないものを順次やっていきます。
これだけの良本ですからものにしないともったいないですね。


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

コメントの投稿

非公開コメント

No title

当たり判定....調べてみましたがこんなに難解とは...
アクションゲームには不可欠なだけに簡単に実装できるようにしてほしいもんですね~iPhoneゆえに処理速度、メモリーなど限られてきますもんね。勉強になります。
しかし...cocos2dでのゲーム開発は面白そうですね(^∇^)なぜか自分も参加しているような感じで読ませてもらってます。(^ ^)

あとキャラクターも楽しみにしてます(笑)

No title

いつも見ていただいてありがとうございます。

確かにiPhoneの処理速度やメモリは大したことはないですね。
上の画像はマックでのシミュレータでのものなので、実機でやるともっと遅くなるでしょう(まだやったことはありません)。
うまく考えて処理をするようにしないと実用に耐えられないようになるでしょう。。。

>自分も参加しているような感じ
そういわれるとうれしいですね。
勉強の記録なので他の記事と違って成長の記録です。
これからも描きますのでよろしくお願いします。

キャラは何パターンか考えているのですがどうするかは未定です。
こちらの方も順次書いていこうと思います。
プロフィール

てぃー

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」が掲載!!



 

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