GameMaker 日本語掲示板

【解決】instance_create_layerについての質問

5 コメント
views
17 フォロー

instance_create_layerで敵の弾を作成していますが、一度に2個以上の弾を
打たせたいのですが、 n = 玉の数 みたいな感じで簡略化することは可能
でしょうか?

よろしくお願いします。

kisena
作成: 2021/10/18 (月) 19:45:20
最終更新: 2021/10/19 (火) 19:57:35
通報 ...
1

こういうやり方はどうでしょうか?

repeat(n) {
   instance_create_layer(...);
}
2
kisena 2021/10/19 (火) 00:04:23

ありがとうございます!数が増えました!
これらに一定の角度つけて扇状にしたい場合はどうすれば良いのでしょうか?

3

横から失礼します。
gamemakerのwikiでの解説です。このwikiは何かと参考になるかと・・・
https://www.wikihouse.com/GameMaker/index.php?cmd=read&page=instance_create_layer()&word=instance creat

wikiのプログラムを書きかえました。即興なので変な所あったらすみません。
弾を撃つのをfor文で5回繰り返して(repeatと同じようなもん)、一番下で1回ごとに角度用の変数dirを10ずつ増やしてます。
withの中身が発射した弾が出現した瞬間の処理(弾objectのcreateイベントを持って来てる感じ)なので、そこでローカル変数のdirection(向き)に変数dirを代入してます。(otherはwithの外の変数を持ってくるみたいな意味です)

shoot_speed = 3;
dir = 0;

for(i=0;i<5;i++){
 var inst = instance_create_layer(x, y, "instance_layer", obj_Bullet);
 with (inst){
  speed = other.shoot_speed;
  direction = other.dir;
 }
 dir += 10;
}

4

連投になりますが、ループ用の変数iを角度にも使えば以下のように省略できます。(さっきの書いてから気づいた)
shoot_speed = 3;

for(i=0;i<5;i++){
 var inst = instance_create_layer(x, y, "instance_layer", obj_Bullet);
 with (inst){
  speed = other.shoot_speed;
  direction = other.i*10;
 }
}

5
kisena 2021/10/19 (火) 19:57:15

実装できました!
詳しい解説までありがとうございます。勉強になりました!

また機会があればよろしくお願いします!