タイムストップの白黒フィルター効果

問題説明:

実現したい効果:背景とタイルに白黒フィルターを適用し、背景は連続するマルチフレームアニメーションとしてスクロールさせる。時間停止時には背景のスクロールと再生が一時停止する(敵オブジェクトや敵弾については、ビジュアルスクリプトを使用して白黒フィルター効果を適用可能)

目指す完成イメージ:『東方月神夜』のように、時間停止中は背景とタイルが白黒で、プレイヤーと弾幕はカラーで表示される状態。

失敗した試行1:画面全体のエフェクトを白黒に設定したが、プレイヤー自身も白黒になってしまった(空は連続してスクロールし、炎は燃え続けている)。

失敗した試行2:オブジェクトのフィルターを白黒に設定し、敵および敵弾に対して時間停止時の白黒フィルター効果を適用できた。しかし、背景とタイルの色は変わらず、背景とタイルにはビジュアルスクリプトによるフィルター処理が実行されていないため、通常通りアニメーションが再生されてしまう。

まとめ:正しい制作アプローチが見つからず、公式より適切な方法をご教示いただきたくお願い申し上げます(おじぎ)

「いいね!」 1

私の調査によると、フリーズ(一時停止)処理はコードなしで実現できます。タイムストップに「レイヤー無効化」を追加し、プレイヤーがいるレイヤーを選択して「例外として扱う」にチェックを入れると、他のすべてのレイヤーが停止します。私のテストでは、スクロールする空、背景、AnimatedSprite2Dのアニメーション、パーティクルがすべてフリーズしました。同じ設定で「レイヤー有効化」をすれば、すべて元に戻ります。敵や敵弾グループのゲーム速度を0%に変更すると、それらも停止します。

ただし、無効化されたレイヤー上では、アニメーションタイルやシェーダーエフェクトは動き続けます。もし炎がアニメーションタイルであれば、背景レイヤー上にAnimatedSprite2Dとして配置することでフリーズできると思われます。プレイヤーと同じレイヤーにあるものは、プレイヤー自体もフリーズさせずに無効化できないため、フリーズさせたい要素はそのレイヤーから分離しておくことをお勧めします。

以下は、フリーズしたものとそうでないものの動画です:

白黒部分の方が難しいです。現在、背景やタイルだけにフィルターを適用する方法はありません。シーン効果はプレイヤーを含め画面全体を覆い、オブジェクトフィルターはオブジェクトに対してのみ機能します。それが『ルナ・ナイツ』のような見た目を実現するのが難しい原因ですが、フィルターを適用するレイヤーを選択できる機能を正式にリクエストしています。

ご返信ありがとうございます。「レイヤーの無効化」によってシーン全体の一時停止効果(レイヤーを有効化すれば元に戻せます)を実現できました。また、ゲーム速度の変更により、敵と敵の弾のみを一時停止する効果も実装しました(ゲーム速度を調整すれば解除できます)。白黒エフェクトについては、公式が『Luna Nights』の視覚効果を正式に実装されるまで、じっくりお待ちしています(お辞儀)

「いいね!」 1