新年早々ですが次の弾幕ゲームの制作に入りました。先に動画を掲載しますが、記事を読んでから見た方がよいかもしれません。
移動を記述するフォーマットの最小要素は以下のようになっており、カンマで区切られた3つの要素を持っています(エクセルで書き出すことのできるCSV形式です)。
=====================================
X座標の設定、Y座標の設定、時間の設定
=====================================
*************************************************
0:00- 通常の往復移動
0:28- イージングで動きに丸みを付ける
0:50- イージングで弾むように
1:12- プレイヤー機の位置に
1:39- イージングでゴムのように
1:59- ランダムの位置に
2:24- 停止設定
2:25- 相対移動の設定
3:18- ランダムの位置からプレイヤー機の横をかすめる
*************************************************
座標と時間
基本は移動先の座標と移動に要する時間を設定します。速度ではなく時間で管理するのには意味があり、移動と弾幕の攻撃をリンクさせるために必要なのです。弾幕は時間で制御(0.1秒おきに10回、3方向に弾を出す等)されるため移動処理も時間にしないと弾幕との連携が取れないのです。
修飾子
座標と時間であれば数値の指定だけで良いのですが、動画では数値の前に1文字のアルファベットが付いています。これは自作の修飾子で、この種類によって動きに変化を持たせることができます。修飾子と数値はプログラム(split)で区別しやすいように「_」で区切っています。
=====================================
修飾子_数値 (例:n_100)
=====================================
以降、修飾子の説明をしていきます。
n(通常指定)
nを持つ数値は通常の座標を示しています。つまり「n_100,n_100」となっていたら(100,100)の座標に移動します。normalの意味を込めてnにしました。
p(プレイヤー指定)
pを持つ数値はプレイヤーの座標を示しています。数値を0にする「p_0,p_0」と設定するとプレイヤーと重なる位置に移動しますが、数値を変更する事で動画のようにプレイヤーの面前100pxに移動させることができます。動画での値は「p_0,p_100」となっているので、X座標はプレイヤーと同じ、Y座標はプレイヤーから100px上の位置になります。
r(ランダム座標)
rを持つ数値はランダムを示しています。他の修飾子と異なり数値を2つ(最小値ー最大値)指定します。動画のように「r_0_640,r_100_200」と設定すると、X座標は0〜640の乱数、Y座標は100〜200の乱数となります。
s(停止または相対移動)
今回の弾幕ゲームは弾幕の美しさを重視したいので、弾幕は停止した状態で放つことが多くなります。停止なので数値は必要ないはずなのですが付けてみました。これで相対移動の設定ができます。つまり「s_0,s_0」であれば停止ですが、「s_0,s_100」とすればX座標は現状維持、Y座標は現座標から100px上に移動します。
時間の修飾子
上記は座標設定に関する修飾子でしたが、時間設定は別の修飾子になっています。種類は4つですが、すべてイージング(加速度設定)にかんするものです。
=====================================
l:イージングなしの等速移動(liner)
i:最初ゆっくり(easeIn)
o:最後ゆっくり(easeOut)
b:両方(easeInOut)
=====================================
弾の発射間隔は等間隔なので、移動も等速移動にしないと弾幕が乱れる。なので移動中に攻撃する場合はlを設定して、攻撃しない場合はイージングを設定すると思います。
攻撃の設定
攻撃のフォーマットはまだ決まっていませんが、移動とリンクさせるので以下の様に移動設定の右側に設定して1行にまとめる形になると思います。
=====================================
(100,100)に移動、1秒、攻撃パターンA
停止、3秒、攻撃パターンB
プレイヤーの前に移動、1秒、攻撃パターンC
=====================================
攻撃のフォーマットは弾幕の器シリーズから結構な変更が必要なので大変そう…。
twitterを本格的に初めてみた。ブログの更新記事をつぶやくのがメイン。あとCocos2dやUnity、その他アプリ開発に関連するツイッターの方をフォローして情報も集められたらなぁと思います。
— 柳澤@ゲーム作るよ (@designdrill) 2015, 12月 28