1. このサイトではcookie (クッキー) を使用しています。サイトの利用を継続した場合、cookieの使用に同意したものとみなさせていただきます。 詳しくはこちらをご覧ください。

重なったイベントの描画順の制御について

shun2019-02-06に開始した「プラグイン制作・技術」の中の討論

  1. shun

    shun ユーザー

    トリアコンタンさんの制作されたEventReSpawn.jsを使用してイベントの動的生成を行っています。
    動的生成したイベントの上にイベントを生成したいのですが、ページ上で設定できるプライオリティより細かく描画順を制御する方法はないでしょうか。

    一応sprite.zの値を変更することで帰ることができるとのことですが、イベントの画像のsprite.zをどうすれば変更できるのかがわかりませんでした。

    現状の動画を撮影してみました。どういうことがやりたいのか見ていただけると理解いただけるかなと。
    (サイズが大きいので外部サイトにアップしています)

    http://xfs.jp/gEv4UW

    なぜかメニューを開くと描画順が変わります。
    何らかのリフレッシュ?処理の影響でしょうか。
     
    #1
    munokura神無月サスケ がいいね!しています
  2. 神無月サスケ

    神無月サスケ ユーザー

    イベントが重なった時、どちらが上になるかについては、
    デフォルトでは、公式サイトで以下のように解説されています。
    https://tkool.jp/mv/course/02.html
    >仮に画像にタイルが設定されたイベントがその場所に複数ある場合、
    >通行判定はイベントIDが小さい方が優先されます。
    >ただし、見た目は逆にイベントIDが大きい方が上に表示されます。

    つまり、イベントIDの大きい方が、上に表示される、ということですね。

    トリアコンタンさんのイベント動的生成プラグインを使うということは、
    生成される際に、イベントIDが自動的に割り振られることだと思います。
    恐らく、後から作成されたイベントほど、イベントIDが大きくなると予想されるため、
    動的作成の順番を変更すれば、望み通りの動作になるんじゃないかな……と思います。
     
    #2
    shunmunokura がいいね!しています
  3. shun

    shun ユーザー


    ありがとうございます! 知りませんでした。

    が、上に表示されてほしいイベントの方が後に生成しているのに上に表示されないんですよね。

    メニューを開くと順番が変わって思い通りの描画順になるんですが……。

    マップのリフレッシュをすればいいのかな。

    ともかく非常に参考になりました!
     
    #3
    神無月サスケ がいいね!しました
  4. shun

    shun ユーザー

    イベント生成後に以下のようにその場に移動させることで解決することができました!
    ありがとうございます!
    コード:
    $gamePlayer.requestMapReload();
    $gamePlayer.reserveTransfer($gameMap.mapId(), $gamePlayer.x, $gamePlayer.y, $gamePlayer.direction(), 2);
     
    #4
    神無月サスケ がいいね!しました

このページを共有