【シーン終了時に状態を保持する】の正しい使い方について質問です

みなさん、こんにちは。

シーン内に、条件を満たすと破壊されて通路になる「壊れる壁」を作成しました。

↑設定も簡単です。このオブジェクトに初期状態でコリジョン(当たり判定)を設定し、条件が満たされてアニメーションが再生された時点でコリジョンを無効にします。これは単一の動作です。

問題は、設定をどう変えても、ポータルを使って戻ってくると、必ずこの壁が初期状態に戻ってしまうことです。

「保存可能」を試しました。シーンから離れる前にセーブ&ロードすると、壁オブジェクトは【end】の状態のままです。しかし、一度シーンから離れると、再び【wall】の状態に戻ってしまいます。

image

↑そこで、baseSettings ノード内の「シーンの終了時に状態を保持」にチェックを入れることを試みました。

しかしチェックを入れると、さらに多くの問題が発生しました。

問題1:チェックを入れて保存し、読み込んだところ、再び初期状態の【wall】に戻ってしまいました。
問題2:チェックを入れていても、ポータルを使ってシーンから離れて戻ってくると、壁オブジェクトはやはり【wall】の状態に戻ってしまいます。

非常に不思議です。みなさん、どのようにすればオブジェクトが最終的な動作状態を維持できるのでしょうか?

この「シーンの終了時に状態を保持」は、いったいどのように機能させるべきなのでしょうか?

「シーン終了時に状態を保持」は、シーンに戻った際にオブジェクトがどの状態から始まるかを保持するだけです。途中で変更されたプロパティや値は保持されません(スイッチや変数は保持されるかもしれませんが、覚えていません)。したがって、終了状態が空の場合、オブジェクトはその空の状態として読み込まれますが、ブレイクスルーでの変更は引き継がれません。

確認ですが、プロパティの変更(コリジョンの無効化、壊れたアニメーションなど)は、ブレイクスルーだけでなく、終了状態自体に設定する必要があります。そうすれば、戻ってきた際に終了状態が新規で読み込まれ、そのプロパティが適用されます。

アニメーションに関する注意点として、終了状態でアニメーションを使用している場合は、ブレイクスルーからの継続に依存せず、終了状態が独自のアニメーションセットを持つようにしてください。シーン読み込み時にオブジェクトは初期状態から直接終了状態にジャンプするためです。

返信ありがとうございます。少し理解しきれなかったようです :rofl:

一点確認したいのですが、**【シーン終了時に状態を保持】**というオプションは、シーン切り替え時に初期状態に戻ってしまうため、これを使って永続的なシーン効果を実現することはできないということでしょうか。

私の【end】アクションは、壊れた壁の単一フレームアニメーションです。

トリガー条件発動後に、このオブジェクトを永続的に【end】状態に保つには、どのような操作が便利でしょうか?

追記:

すでにグローバルスイッチを使ってオブジェクトのアクション状態を判定しています。シーン入室時に1フレームだけアニメーションが飛んでしまう点はありますが、現時点ではこの方法しか思いつきません。

私の方でさらにテストを行ったので、最初の投稿で述べた内容の一部を整理しておきたいと思います。

私が確認したところ、シーンを離れるとオブジェクトの完全な複製が作成され、戻ってくると、以前の位置にプロパティなどを保持した新しいオブジェクトが生成されるようです。つまり、以前のアクションでプロパティを変更してシーンに戻っても、そのプロパティは離れる直前の状態のまま保持されます。以前は「プロパティは保持されない」と言っていましたが、実際には保持されているようです。

プレイテスト開始時の状態:
agm.windows.editor.x8664W1qJXkLP0g

シーン再入室時の状態:
agm.windows.editor.x8664K2UaLW2rqW

一つ気づいた点ですが、状態が保持された状態でデバッグプリントを表示させるには、その前に少なくとも0.03秒のウェイトを入れる必要がありました。ただし、一部のアクションは瞬時に実行されるようなので、それらが状態の完全な復元前に実行されているのか、それともその時点でもうプロパティが設定されているのかについては、まだ確信が持てません。

AnimationPlayerにデフォルトのアニメーションが設定されていますか? もしそうだとすると、最初で処理が止まっている可能性があります。現在、デフォルトのアニメーションから始まる初期ロード時間に関するバグレポートが上がっています。これは、初期表示後に一瞬チカッとする現象に関連しています。開発チームはそのバグについてシーン遷移の修正に取り組んでいるので、この特定の動作についてはその修正を待つ必要があるかもしれません。

とりあえず、AnimationPlayerにデフォルトのアニメーションが設定されていないことを確認してみてください。リスト内のアニメーションのいずれも、自動再生(autoplay)アイコンがチェックされていないはずです。以下はそのアイコンの例です:

「いいね!」 1

やはり!!!おっしゃる通り、デフォルトのアニメーションが読み込まれるとこの1フレームのちらつきが発生しますが、初期のデフォルトアニメーションを削除すればこの問題は発生しません。

私は【シーン終了時に状態を保持する】が無効だと思っていたのですが、

以前はグローバルスイッチで操作していましたが、ポータルから戻った際に1フレームのちらつきが発生しました。これはデフォルトアニメーションが原因で、デフォルトアニメーションをオフにしてから【シーン終了時に状態を保持する】をオンにすると、ポータルから戻った際に最終的な状態を保持できるようになりました。ただし、デフォルトアニメーションをオンにすると初期状態に戻ってしまいます。

これはかなり深刻なバグだと思うので、開発チームに解決してほしいです。

(同時に、開発チームにはサブノードオブジェクトが消滅した後の復活位置の修正も早く完了してほしいです)