敵キャラを下へ動かす

kobold2dのサンプルに入っていたParallax-Side-Scrollerを改造して自分のゲームにしている件です。
前回、何とか敵キャラの表示の差し替えだけできました
今回は、元々横方向に動いていた敵キャラの動きを縦方向にしてみます。

その前に、前回のやり残し的な話です。
不要なキャラを消したつもりでしたが、敵キャラから出ている弾が出ているようでした。表示はされていないのですが、発射音が出ているので処理が働いていたようです。

今まで関係ない処理をコメントアウトして、実際に使っている部分が限られて来たので、これは意外に早く気が付きました。
最初に、EnemyEntity.mのinitWithTypeメソッド内にある以下をコメントアウトしました。

StandardShootComponent* shootComponent = [StandardShootComponent node];//クラスを追加?
shootComponent.shootFrequency = shootFrequency;
shootComponent.bulletFrameName = bulletFrameName;
shootComponent.shootSoundFile = @"shoot2.wav";
[self addChild:shootComponent];

すると、同じメソッド内にある以下も使ってないと怒られる(Unused variable)のでコメントアウトしました。

NSString* bulletFrameName;
float shootFrequency = 6.0f;

これで、弾を出す処理を完全に呼ばなくなったようで、発射音が聞こえなくなりました。

さて、敵キャラの動きを横方向から縦方向へ変更します。
まず、敵キャラの出現場所が画面右になっているので、画面上にします。
これは、EnemyEntity.mのspawnメソッドにありました。
それを以下のように変えました。

float yPos = screenRect.size.height + spriteSize.height * 0.5f;
float xPos = CCRANDOM_0_1() * (screenRect.size.width);

これは、単に縦と横を入れ替えただけですね。

次に、実際に敵キャラが移動する動きです。これは、なかなか見つけ難かったです。
StandardMoveComponent.mのinitメソッドにありました。どうやら、移動系の処理はこのメソッドで行っているようです。

velocity = CGPointMake(0, -80);

変更は出現場所場所よりも簡単でした。xとyを入れ替えるだけです。

130501 0006
ここまででRunすると、こんな感じになりました。

このままだと、1度サーっと敵キャラが画面を通り過ぎると出てこなくなってしまいます。これを何度でも出てくるようにしました。
StandardMoveComponent.mのupdateメソッドで以下のように調整しました。

if (entity.position.y < -100)
{
   [entity setPosition:ccp(entity.position.x, 480)];
}

あと、1度に画面に出てくる敵キャラの量が微妙に寂しいので、頻度を少し調整しました。
EnemyEntity.mのinitSpawnFrequencyメソッドです。そのままの名前ですね。
100だった数値を20にしました。

[spawnFrequency insertObject:[NSNumber numberWithInt:20] atIndex:EnemyMissile];

130503 0001
これで雰囲気がゲームっぽくなってきました。


iPhoneで再生しているのを撮ってみました(5秒)。

次は、自キャラとして都市設置したいと思います。