kobold2dのサンプルに入っていたParallax-Side-Scrollerを改造して自分のゲームにしている件です。
前回、何とか敵キャラの表示の差し替えだけできました。
今回は、元々横方向に動いていた敵キャラの動きを縦方向にしてみます。
その前に、前回のやり残し的な話です。
不要なキャラを消したつもりでしたが、敵キャラから出ている弾が出ているようでした。表示はされていないのですが、発射音が出ているので処理が働いていたようです。
今まで関係ない処理をコメントアウトして、実際に使っている部分が限られて来たので、これは意外に早く気が付きました。
最初に、EnemyEntity.mのinitWithTypeメソッド内にある以下をコメントアウトしました。
1 2 3 4 5 |
StandardShootComponent* shootComponent = [StandardShootComponent node];//クラスを追加? shootComponent.shootFrequency = shootFrequency; shootComponent.bulletFrameName = bulletFrameName; shootComponent.shootSoundFile = @"shoot2.wav"; [self addChild:shootComponent]; |
すると、同じメソッド内にある以下も使ってないと怒られる(Unused variable)のでコメントアウトしました。
1 2 |
NSString* bulletFrameName; float shootFrequency = 6.0f; |
これで、弾を出す処理を完全に呼ばなくなったようで、発射音が聞こえなくなりました。
さて、敵キャラの動きを横方向から縦方向へ変更します。
まず、敵キャラの出現場所が画面右になっているので、画面上にします。
これは、EnemyEntity.mのspawnメソッドにありました。
それを以下のように変えました。
1 2 |
float yPos = screenRect.size.height + spriteSize.height * 0.5f; float xPos = CCRANDOM_0_1() * (screenRect.size.width); |
これは、単に縦と横を入れ替えただけですね。
次に、実際に敵キャラが移動する動きです。これは、なかなか見つけ難かったです。
StandardMoveComponent.mのinitメソッドにありました。どうやら、移動系の処理はこのメソッドで行っているようです。
1 |
velocity = CGPointMake(0, -80); |
変更は出現場所場所よりも簡単でした。xとyを入れ替えるだけです。
このままだと、1度サーっと敵キャラが画面を通り過ぎると出てこなくなってしまいます。これを何度でも出てくるようにしました。
StandardMoveComponent.mのupdateメソッドで以下のように調整しました。
1 2 3 4 |
if (entity.position.y < -100) { [entity setPosition:ccp(entity.position.x, 480)]; } |
あと、1度に画面に出てくる敵キャラの量が微妙に寂しいので、頻度を少し調整しました。
EnemyEntity.mのinitSpawnFrequencyメソッドです。そのままの名前ですね。
100だった数値を20にしました。
1 |
[spawnFrequency insertObject:[NSNumber numberWithInt:20] atIndex:EnemyMissile]; |
iPhoneで再生しているのを撮ってみました(5秒)。
次は、自キャラとして都市設置したいと思います。