質問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では同様の項目がなく、調べてもイマイチどこから設定しているのか分かりませんでした・・・
マクロの登録場所を教えていただけますでしょうか。
質問1
instance_create_depthでもいいと思います。
この関数を使うデメリットというのは特にありません。
どちらを使うのが自分に都合がいいのかで選ぶといいと思います。
instance_create_layerで作るとレイヤーのdepthになります。
instance_create_depthで作ると引数で指定したdepthになります。
どっちで作っても後でdepthを変更できます。
GMS2はdepth毎にレイヤーを作成します。
質問2
コード、scriptのどこでもいいので、
というように記述してください
参考
https://manual.yoyogames.com/GameMaker_Language/GML_Overview/Variables/Constants.htm
depthについて、詳しい解説ありがとうございます!勉強になります。
マクロについてもありがとうございます、scriptに記載していくことにしました。
自分の場合ですと、roomエディターで自機のインスタンスレイヤーの上に弾のインスタンスレイヤーを作って、 instance_create_layer() で表示させていますね。
自分は色々とキャラクターの表示順を試しながら作っているのですが、故事的に、depthよりはroomのレイヤーで管理したほうが楽そうだな、という印象だったのが理由ですね。
そういえば作成するオブジェクト用に空のレイヤーを作っておくという発想はありませんでした・・・
こちらの方が使い勝手が良さそうなので、yOichiさんと同様にbulletレイヤーを作っておいて、instance_create_layer()を使っていくことにします。
ありがとうございました!