GameMaker 日本語掲示板

【解決】インスタンス作成時の深度(depth)設定についてと、マクロ登録の質問

4 コメント
views
16 フォロー

質問1
弾を発射する際、発射するキャラクターより上に表示させたいのですが、今まで下記のように記述していました。
(withブロックでdepthを設定)

e_b = instance_create_layer(x, y, "Instances_chara", obj_bullet1_A);
with(e_b){
speed = other.b_spd;
direction = other.b_ang;
depth = 10;
}

しかし直接depthを指定できる、instance_create_depthなる命令を見つけたので、こっちの方がコードの短縮になって良いかと思いましたが、動画などではあまり使っている人を見ません・・・何かデメリットがあるのでしょうか。
また、皆さんはこういうケースでは、どう設定していますでしょうか。

質問2
GMSの1.4ではツールバーのResources>Defined Macrosからマクロを登録していたのですが、2では同様の項目がなく、調べてもイマイチどこから設定しているのか分かりませんでした・・・
マクロの登録場所を教えていただけますでしょうか。

hanigura
作成: 2021/10/31 (日) 13:37:27
最終更新: 2021/11/02 (火) 00:49:28
通報 ...
1

質問1
instance_create_depthでもいいと思います。
この関数を使うデメリットというのは特にありません。
どちらを使うのが自分に都合がいいのかで選ぶといいと思います。

instance_create_layerで作るとレイヤーのdepthになります。
instance_create_depthで作ると引数で指定したdepthになります。
どっちで作っても後でdepthを変更できます。
GMS2はdepth毎にレイヤーを作成します。



質問2
コード、scriptのどこでもいいので、

#macro abc 100
#macro def 200

というように記述してください

参考
https://manual.yoyogames.com/GameMaker_Language/GML_Overview/Variables/Constants.htm

3

depthについて、詳しい解説ありがとうございます!勉強になります。
マクロについてもありがとうございます、scriptに記載していくことにしました。

2
yOichi 2021/11/01 (月) 18:24:54

自分の場合ですと、roomエディターで自機のインスタンスレイヤーの上に弾のインスタンスレイヤーを作って、 instance_create_layer() で表示させていますね。

自分は色々とキャラクターの表示順を試しながら作っているのですが、故事的に、depthよりはroomのレイヤーで管理したほうが楽そうだな、という印象だったのが理由ですね。

4

そういえば作成するオブジェクト用に空のレイヤーを作っておくという発想はありませんでした・・・
こちらの方が使い勝手が良さそうなので、yOichiさんと同様にbulletレイヤーを作っておいて、instance_create_layer()を使っていくことにします。
ありがとうございました!