【アプリ開発日記】敵の動きを作る【シューティングゲーム】


先週から敵の動きを作成していました。
とりあえずはグラディウスの最初の敵、
5体ぐらいの編隊で飛んでくるやつの動きから作りはじめました。

実装は過酷でした。



まずYouTubeを見ながら動きをトレースする
(最初の敵だけのつもりが懐かしくてクリアするまで見ちゃいましたw)
画面の外から敵が来る!
自機の手前ぐらいのx座標で一旦斜め後方へ。
このとき、y座標は自機の高さになるように動く。
次にそこからまっすぐ自機に向かってくる。
そして自機に当たるぐらいで、方向転換して後方へまっすぐ逃げる。

これだけで
CCMoveToが4個必要。
もっと効率のいい実装方法があるはず。。。と思いながら実装完了。
斜めに戻る位置でtanθとか使ってまして、、、しんどかった。

その後、もう一つ
ジグザグに飛んでくる敵も実装。
こいつは前作のプニン2で炎を実装しているのでシレッと
これはCCMoveByでいったりきたりを画面端までくりかえすっていう
while文で実装。。。

てか、敵のパターンを作るたびにこんなに実装すんの?
もうそろそろ限界なんですけど。

正直距離と位置情報だけわかれば、なんとかなるんじゃないと思い始めた本日。
例の高かった本、、、ごほんごほん を確認
正直なんども助けれてますので、価格以上の価値を提供して頂いてますので!

【軌道を描いて飛ぶ敵】
この章で、軌道情報がさらっと配列に格納されていることになっておりました。
読んでみて思ったのは、
「配列から取り出してきた値分だけ、敵が移動すればいい。」
そしたら配列の部分をたくさん作るだけで、
プログラムのパターンに毎回頭を悩ませる必要はない。

この考え方の方が簡単かつシンプル!(多分)

1.以下2〜5を座標情報分だけ繰り返します。
2.一つ前の座標情報と現在の座標情報の差分から距離をきめる
3.速度は固定
4.距離と速度で時間を取得
5.CCMoveTo
6.一括runAction

簡単。
これにいろんな配列を格納するだけで、敵の動きが出来る。
先週の時点でこの章読んでおくべきだった。。。

今後は個々にいくつかの配列を作っておいて、
どっかのタイミングでくっつけたりしたら
かなり複雑な動きもできる!。。。のかなぁw