AIのナビゲーション制御のため ANavLinkProxy を使用していますが、SetSmartLinkEnabledでリンクを無効化しても、AIがそのルートを依然として選択してしまいます。
期待する動作:
SetSmartLinkEnabledをfalseにすると指定リンクが無効になってほしい。ドアの鍵をかけた時にリンクを切るといった事に使用します。
試したこと:
ブループリントの SetSmartLinkEnabled ノードで false を設定しても、MoveToLocationOrActorでの移動でリンクのルートを移動します。
ANavLinkProxy アクターの詳細パネルで、最初から「Link Enabled」のチェックを外していても、リンクが無効にならないことも確認されています。
AIの移動を一度停止させ、パスを再計算させても状況は変わりませんでした。
これはエンジンの不具合でしょうか? あるいは、他に確認すべき設定や仕様がありましたらご教示いただけますと幸いです。
よろしくお願いいたします。
まずは SmartLinkを有効にするために SmartLinkIsRelevant も有効になっていることをご確認ください。それからSmartLink の EnabledAreaClass, DisabledAreaClass が 有効なクラスとなっていることをご確認ください。例えばデフォルトのEnabledAreaClass=NavArea_Default, DisabledAreaClass=NavArea_Null であるならば有効/無効を切り替えた際に そのLinkをパスできる/できない と挙動に違いが出て、NavLinkの見た目上も 緑/黒 と切り替わっていることが確認できるはずです。ただしこのLinkというのはナビメッシュのエリアとエリアをリンクする(ナビメッシュ同士が離れているものの間にリンクパスを作成する)ものであるため、このリンクが無効になっていたとしても、それはリンク間がパス検索から除外されるだけであってナビメッシュが無くなるわけではありません。そのため図のような領域が隣接していないエリア同士を結ぶリンクが無効化された場合はパス検索から除外されますが、元々エリア同士が隣接されているナビメッシュがある場合はNavModifierなどを利用してNullのNavAreaなどを利用する方がよいこともあります。
[Image Removed]
SmartLinkIsRelevant が有効になっていなかったので有効にしましたが改善しませんでした。
EnabledAreaClass/DisabledAreaClassは適切に設定されています。
投稿時に再現プロジェクトを添付してあるので見てもらえますでしょうか。よろしくお願いします。
[Image Removed]
提示された設定で動作確認できました。
再現プロジェクトだけでなく、実プロジェクトでも問題なく動作しています。
問題は解決しました。ありがとうございます。
再現したので添付します。
以前の再現プロジェクトから変更した場所は、BPのChildActorでNavLinkProxyを配置している所です。ドアに関連付けたいため、このような構成になっています。
問題の箇所ですが、ChildActorでNavLinkProxyを使用すると初期配置でリンクがEnableになっていません。この状況でSetSmartLinkEnabledをtureにしても繋がらず、一旦falseにしてからtrueにする必要があります。
初期配置でリンクが有効になっているようにすることは出来ないでしょうか?
よろしくお願いします。
Ken.Kuwano
(Ken.Kuwano)
7
追加のプロジェクトを拝見しましたが ChildActorでの利用には対応しきれていないからか挙動が異なることが確認できました。ChildActorでのリンク切替を有効にする場合、現状は回避策としてデフォルトのLinkEnabled=Falseにしておくことが挙げられます。
>現状は回避策としてデフォルトのLinkEnabled=Falseにしておくことが挙げられます。
了解しました。
これは暫定対処で修正予定はありますでしょうか?
Ken.Kuwano
(Ken.Kuwano)
9
ご確認頂きありがとうございます。
こちらは以下の内容でデータベースに登録させて頂きました。今後修正に関してアップデートがありましたらお知らせしたいと思います。
Ken.Kuwano
(Ken.Kuwano)
11
ご返答頂きありがとうございます。
再現プロジェクトを添付頂いていることを失念しており失礼いたしました。共有頂きありがとうございます。中身を拝見しましたところ、NavLinkのPointLinkにもLinkの情報が入っており、こちらが有効になっていることでSmartLinkのオンオフとは別に、PointLinkのパスを利用してパス検索が機能しておりました。対処方法として、PointLink自体のオンオフはできないのでPointLinkの登録を削除して、SmartLinkだけを有効にした状態として頂くことで、NavLinkのパスに従ってパス検索が機能することを確認しております。こちらをお試しいただけますと幸いです。
[Image Removed]