目次
次元ドア開発時に起きた問題
次元ドアのステージ作成中、仲間や敵を配置している時に問題が置きました。仲間や敵は、移動先に足場がないと向きを変えます。その処理のために足場を確認するためのArea2Dを左右の足元に置いています。
それらはルートのFriendAのスクリプトにアタッチしています。
このようなシーンをステージに配置したあと、仲間を増やすために複製をした時に問題が発生しました。
複製されたFriendA2の足元ノードのパスをインスペクターで確認してみると、以下の通りもとのFriendAの足元を参照してしまっています。
これでは、FriendA2はFriendAの状態に応じて動くことになるので、変なところで向きを変えてしまうことになります。
因みにもとのFriendAは以下の通り想定通りのパスになっています。
ステージを作成している際に仲間が変な動きをしていたのはこれが原因だったようです。他の仲間の足元を参照していたので、想定外の場所で反転をしていたのです。
もう一つのバグ
同じバグが原因らしい症状がもう一つあります。ブランチをシーンとして保存する際に、ノードパスが消えてしまう問題です。
以下のような簡単なシーンを作成しました。
MyNodeのスクリプトに、他のノードを受け取る変数をエクスポートして、インスペクターで子供のノードMyChildをアタッチしました。
MyNodeをブランチをシーンとして保存するでシーンに変換します。
これでシーンになったのですが、選択してインスペクターを確認すると先ほど割り当てたMyChildが消えてしまっています。
作成したシーン側でも消えてしまうので、再設定が必要になります。これも恐らく問題になっていたと思われる症状です。
問題は4.3dev1で解消済み
調べたところ、この件は去年の6月には報告が上がっていました。
https://github.com/godotengine/godot/issues/78060
解決に苦戦したようで4.2には間に合いませんでしたが4.3で解消するようです。4.3 dev3で確認したところ、無事に解決していました!
4.2を使う間は、以下に気を付けて使いたいと思います。
- 複製したときは、ノードの設定を確認する
- ブランチをシーンとして保存は使わず、最初から新規シーンで構成してから他のシーンに配置するのが安全
参考URL
- https://github.com/godotengine/godot/issues/78060
- https://github.com/godotengine/godot/pull/83343
- https://godotengine.org/download/archive/4.3-dev3/