GameMaker 日本語掲示板

【バグ?】depth=-50以下でオブジェクトが表示されない / 3

6 コメント
views
16 フォロー
3

自分も同じ環境(IDE v2.3.1.542、Runtime v2.3.1.409)で試してみましたが再現しませんでした。

ちなみに、room内にBackground layerがある場合、オブジェクトのdepthの値がBackground layerのdepthの値より大きくなると、オブジェクトはBackground layerで上書きされてしまうため表示されません。
新規プロジェクトの場合、Background layerのデフォルトのdepthは100なので、SUPPYさんの投稿の後半で書かれているような現象が起きます。
これはバグではなく仕様だと思います。
Background layerやAsset layer、Tile layerを使用している場合、念のためそれらのdepthの値を確認してみてください。

GMS1の頃はdepth = -y;のテクニックは広く使われていたようですが、GMS2になりレイヤーの機能が導入されてからは、上で述べたようにdepth = -y;を使っても思い通りの結果が得られない場合があります。
ねこたみんさんの投稿で書かれているようにdepth = room_height - y;のような方法でもこの問題は解決できますが、room外にまでプレイヤーを移動できるようにしたい場合にはdepth = room_height - y;の方法だと上で述べたのと同じ問題が発生します。
そのような場合は、次の動画で紹介されているような手法を使う必要があります。

depth = -y;に比べるとかなりコード量は増えますが、レイヤー機能との両立が可能です。

通報 ...
  • 4

    Backgroundは知らないことだらけなのでとても勉強になります。
    まさかそんな仕様があったなんて。ありがとうございます。