[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
前回はかなり説明を省いた更新でしたので、今回はみっちりとやりたいと思っております。
今回は弾をどのように飛ばすかを設定について触れて行きたいと思います。
1.まっすぐに飛ぶ弾
これに関してはそう難しいことはしていません。
基本的にキャラの向きに合わせて飛ぶ方向、弾のスプライトを変更するだけです。
左右に関してはプレイヤーキャラのimage_xscale を参照するようにし、hspeedにかけてやるようにしています。
上下に関してはvspeedをあたえて、image_speedを変更するようにしています。
2.ロケット弾
徐々に速度をあげ、着弾と同時に爆発します。
速度に関しては初速を1にして、ステップイベントで掛け算をしていきます。
速度が一定の値に達したらその値で固定されるようにします。
例
if(spd < 8)
{
spd *= 1.1;
}
着弾後の処理は、まずコリジョンイベントでロケットを消し、destroyイベントで爆発のオブジェクトを生成します。
生成する座標はランダムにします。
例
repeat(random_range(15,30))
{
bull=instance_create(x + random_range(-30,30),y + random_range(-30,30),
obj_effect_bomb);
}
上の例では着弾点の縦横60の範囲に15~30このエフェクトが作られるようになっています。
3.バウンドする弾
地面、壁に当たるとバウンドし、横方向には一定のスピードで進む。
これに関しては試行錯誤を繰り返しました。
イメージとしてはスーパーマリオのファイアーボールなんですが、壁に当たっても跳ね返るというところがネックに・・・
弾が生成された時点で上向きにスピードを加え、重力を常にかけ続けます。
こうすることで放物線を描きながら落下するようになります。
地面に当たったときは上向きに初速と同じスピードを与えてやります。
横方向の速度は常に一定で、壁に当たったときに向きを逆にしてやります。
また、弾の上側が壁にぶつかったとき(上昇中にこれ以上上に行けなくなった時)はvspeedを0にしてやります。
これで、放物線を描きながらポンポンと跳ねまわる弾の完成です。
4.マシンガン
ボタンを押しっぱなしの時に弾を撃ち続けるということですので、
keyboared_checkを使います。
ただ、このままではとんでもない量の弾が撃ち出され続けるので、制限を設けます。
count_bulletという変数をつくり、ここにウエイトをかけたいステップ数を代入します。
count_bulletはステップごとに-1し続け、0になると弾が発射されるようにします。
5.波打つように飛ぶ弾
これには三角関数を使いました。
水平方向に飛ぶときはvspeedにsinの値を
垂直方向に飛ぶときはhspeedにcosの値を掛けます。
例
time += 1;
if(abs(hspeed) == spd){vspeed = -3*sin(radtodeg(time));}
if(abs(vspeed) == spd){hspeed = -3*cos(radtodeg(time));}
radtodegはラジアンを度に変換する関数です。
6.レーザー
長い弾を飛ばします。
ただ生成するだけですといきなり長い弾が現れてしまい大変に不自然ですので、銃口から少しずつ伸びていくような感じにしています。
レーザーをパーツに分けて、それを順番に表示するようにし、全部表示されたらまとめて飛ばすようにしています。
以上が実装した弾に関する設定です。必要に応じて(またはその場の思いつきで)増やしていくかもしれません。
あと、そろそろどんな感じで動くのかを動画で紹介できたらな~、とか考えています。
夢枕獏/綾辻行人/椎名誠/北杜夫/スティーブンキング
・ハマったゲーム
R-TYPE/WILD ARMSシリーズ/イースシリーズ/九龍妖魔学園紀/SIREN/ぐわんげ/プロギアの嵐/エスプレイド/エスプガルーダ/式神の城