忍者ブログ
「Gamemakerでゲームを作って見よう」 ということで、作業メモっぽい使い方をする予定。 愚痴なんかが多くなるかも・・・
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

好きなクインテット3部作は天地創造。
こんばんわorこんにちわ。

今現在いろいろなボスキャラを作ろうと奮闘中なわけですが
出現した位置から動かないボスキャラというのを作ってみました。
メトロイドのマザーブレインなんかがわかりやすい例でしょうか。
 


動かないボスキャラですので、動きは設定する必要がない・・・かと思われましたが、浮いている感じをだしたかったので、その場で上下にゆっくり動くというのをやってみました。

まず、クリエイト時点でvspeedを0.1に設定します。
1以上ですとふわふわした感じが出ませんので1より小さくしてみました。
そして、ステップイベントにて以下のようなコードを実行します。
 

  1. if(ystart - y >= 3)
  2. {
  3.     direction = 270;
  4.     speed *= 1.015;
  5. }
  6. if(ystart - y <= -3)
  7. {
  8.     direction = 90;
  9.     speed *= 1.015;
  10. }
  11. if(abs(speed) > 0.12){speed = 0.1;}
1~10行までで、上下の移動可能範囲を設定します。
この例では上下3ドットの範囲を動きます。
ちなみにystart変数は、
オブジェクトが生成された時のy座標を表します。
現在のy座標とystart座標との差からどれだけ動いたかを割り出しているわけです。
そして、4,9行目がミソでして、speedに1以上2未満の値を掛算することで、じわじわとスピードが上がるようにしています。
実際にやってみていただくとわかるのですが、ふわふわと動いているようにみえます。
で、11行目なのですが、1~10行目の動きに制御を設けています。
当たり前のことなのですが、1以上2未満の数字とはいえ、掛算を続けることで少しづつではありますが大きな数値になっていきます。
長時間ほっておくと、とんでもない速さで上下に弾むように動き始めますので、speedが一定値を超えたら、初期値に戻るようにしてあります。

さて、いわゆる演出はできましたので、ここから攻撃をさせていきます。

今回は敵本体から弾を撃たせるという攻撃方法についてです。
1.発射間隔を指定する
まず基本中の基本です。
obj_bulletを敵の弾として、こいつを敵に撃たせます。
obj_bulletにはなにも設定する必要はありません。
ボスキャラ側からスピード、角度等を指定してやります。
  1. bull = instance_create(x,y,obj_bullet);
  2. bull.speed = 5;
  3. bull.direction = 180;
1行目ではインスタンスを生成し、そのインスタンスのIDを変数bullに格納します。
2、3行目では生成したインスタンスにスピードと角度を与えています。
上の例では一ステップに5ドットのスピードで180度(右から左方向)の方向に飛ばすようにしています。
問題は上のコードをどのイベントで実行するかです。
ステップイベントで行いますと大変なことになります。
試しに入力してみて、どれぐらい大変かを実感してみてください(笑)

ステップイベントですと1ステップごとに一発弾が生成されてしまいますので、超連射状態になってしまいます。悪いとは言いませんが、やはり一定間隔で撃たせたいものです。
そこで、アラームを使います。
クリエイトイベントで
alarm[1] = 20;
alarm[1]
イベントに上のコードを追加。
そして4行目として
alarm[1] = 20;
と記述します。
アラームは入力された値が1ステップごとに1づつ減少するタイマーのようなものでして、時間を計るようなときに使います。
アラームイベントは、指定されたアラームが0になった時に実行されるというものです。
つまり、「20ステップごとに弾が一発生成される」というのが上のコードの意味するところです。
(ちなみに、値を変えることで発射感覚を変えられます。)

2.複数発撃たせてみる。
たとえば3WAY弾を撃たせたい場合は
  1. bull_1 = instance_create(x,y,obj_bullet);
  2. bull_1.direction = 180;
  3. bull_1.speed = 5;
  4. bull_2 = instance_create(x,y,obj_bullet);
  5. bull_2.direction = 180 + 30;
  6. bull_2.speed = 5;
  7. bull_3 = instance_create(x,y,obj_bullet);
  8. bull_3.direction = 180 - 30;
  9. bull_3.speed = 5;
とします。(for文を使う方法もありますが、今回は割愛します。)
アラームイベントに入力するようにしてください。

3.自機狙い弾
自機の方向に向かって発射される弾です。
実装は簡単でして、
まずステップイベントに
angle = point_direction(x,y,obj_player.x,obj_player.y);
を追加します。
これはボスからみた自機の角度を変数angleに代入しています。
あとは
direction = angle;
としてやれば自機狙い弾の完成です。

4.角度を徐々に変える
クリエイトイベントで
angle2 = 135;
とします。
数字は回転を開始させたい角度を入れてください。
つづけてアラームイベントに
angle += 5;
とします。
数字は一度に増やしたい角度です。
そして、弾の角度に
 direction = angle2;
こうすることで指定した角度をスタートとして5度づつ角度を変更しつつ弾を発射させます。
ちなみに、角度の上限を指定したい場合は
if(angle2 <= 225)
   angle += 5;
else
   angle2 = 135;
としてやれば
上限を超えると最初の角度に戻るというようにできます。

他にも工夫次第でいろいろな種類の弾ができます。
そのいろいろや、実際に数パターンの攻撃をランダムで発生させる方法についてはまた近いうちに。
では今日はこの辺で。

拍手

PR
この記事にコメントする
お名前
タイトル
文字色
メールアドレス
URL
コメント
パスワード   Vodafone絵文字 i-mode絵文字 Ezweb絵文字
この記事へのトラックバック
この記事にトラックバックする:
[28]  [27]  [26]  [25]  [24]  [23]  [22]  [21]  [20]  [19]  [18
アクセスカウンター
プロフィール
HN:
性別:
男性
趣味:
読書・ゲーム
自己紹介:
・好きな作家
夢枕獏/綾辻行人/椎名誠/北杜夫/スティーブンキング
・ハマったゲーム
R-TYPE/WILD ARMSシリーズ/イースシリーズ/九龍妖魔学園紀/SIREN/ぐわんげ/プロギアの嵐/エスプレイド/エスプガルーダ/式神の城
カレンダー
04 2025/05 06
S M T W T F S
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
ブログ内検索
最新コメント
[04/30 dean]
[04/29 管理人]
[04/29 dean]
[04/08 管理人]
[04/07 dean]
忍者アナライズ
バーコード
フリーエリア
Copyright (C) Gamemakerでも使ってみる

Template by あでる / Material by 素材くん「無料WEB素材屋」 / 忍者ブログ [PR]