DecoratorのInvertResultが機能しない(?)件について

Here is the forum to do the questions about how to use to Arbor developer.
Attention point:
  • We can not answer your questions about your project specific issues.
  • We can not answer your questions on Unity's specification issues.
  • Please check Arbor Documentation and ask a question if you still don't know how to use it. If the desired function is not described in the document, it is highly possible that the function does not exist from the beginning, so go to the request forum.

ここは、Arbor開発者へ使い方に関する質問を行うフォーラムです。
注意点:
  • ユーザー様のプロジェクトの仕様上の問題や設計に対する質問には答えられません。
  • Unityの仕様上の問題に対する質問には答えられません。
  • Arbor Documentationを確認の上、それでも使い方がわからない場合にご質問ください。欲しい機能の記載がドキュメントにない場合は機能が元から存在しない可能性が高いので要望フォーラムへ。

Forum rules
Here is the forum to do the questions about how to use to Arbor developer.
Attention point:
  • We can not answer your questions about your project specific issues.
  • We can not answer your questions on Unity's specification issues.
  • Please check Arbor Documentation and ask a question if you still don't know how to use it. If the desired function is not described in the document, it is highly possible that the function does not exist from the beginning, so go to the request forum.

ここは、Arbor開発者へ使い方に関する質問を行うフォーラムです。
注意点:
  • ユーザー様のプロジェクトの仕様上の問題や設計に対する質問には答えられません。
  • Unityの仕様上の問題に対する質問には答えられません。
  • Arbor Documentationを確認の上、それでも使い方がわからない場合にご質問ください。欲しい機能の記載がドキュメントにない場合は機能が元から存在しない可能性が高いので要望フォーラムへ。
aaaaa

DecoratorのInvertResultが機能しない(?)件について

Post by aaaaa »

初歩的な質問で失礼します。
ビヘイビアツリーについて、オリジナルデコレーターを実装しています。
可読性的な設計上の理由により、基本的にfalseを返すようになっています。
InvertResultというビルトインのデコレーターによってそれをtrueとして扱って下層の処理に向かってほしいのですが、処理を下まで通してくれません。

一応オリジナルの方で(false)を返していて、InvertResultの方で(true)になっていることは確認できているのですが、処理は通りません。
またInvertResultのリファレンスが検索しても出てきません。

Decoratorの仕様は一つでもfalseがあると通らないようなものでしょうか?
InvertResultはどのように使えばいいでしょうか?
User avatar
caitsithware
管理人
Posts: 493
Joined: 2015/08/17 12:41

Re: DecoratorのInvertResultが機能しない(?)件について

Post by caitsithware »

ご利用ありがとうございます。
aaaaa wrote: 2021/07/28 14:34 InvertResultというビルトインのデコレーターによってそれをtrueとして扱って下層の処理に向かってほしいのですが、処理を下まで通してくれません。

一応オリジナルの方で(false)を返していて、InvertResultの方で(true)になっていることは確認できているのですが、処理は通りません。
InvertResultは自身のノードの実行結果(ActionBehaviour.FinishExecuteで指定する引数あるいはCompositeNodeの処理結果)を反転し、親ノードへ伝えるためのものとなっております。

たとえば攻撃対象を探すアクションがあり、見つかったら成功(true)ないなら失敗(false)を返す場合、親のCompositeNodeがSequencerで攻撃対象が"ない"場合に弟ノードへ移りたいときに攻撃対象を探すアクション側にInvertResultをつける感じです。
(あくまで例でありこういう造りが良いかは別の話です)
aaaaa wrote: 2021/07/28 14:34 またInvertResultのリファレンスが検索しても出てきません。
今試しにドキュメント内右上の検索枠からInvertResult名指しで検索してみましたが出てきているようです。
検索ワードによっては出てこないかもしれませんが検索ライブラリの都合によるため改善できないかもしれません。
またGoogleなどの検索サービスでの検索の場合、出てくるかどうかは確証できません。
この辺りはご了承ください。

InvertResultのリファレンスはこちらです
https://arbor-docs.caitsithware.com/ja/ ... esult.html
aaaaa wrote: 2021/07/28 14:34 Decoratorの仕様は一つでもfalseがあると通らないようなものでしょうか?
複数のOnConditionCheck()の戻り値が全てtrueの場合に自ノードを実行する仕様となっております。

欲しい機能としては、全ConditionCheck後の結果を反転するDecoratorや、Decoratorに条件反転するフラグを直接持たせるといった感じでしょうか。
今現在そのような機能はありませんので、要望として今後導入するか検討したいと思います。
現状では自作するデコレータに個別に条件反転フラグを付ける等の実装をするようお願いいたします。
aaaaa

Re: DecoratorのInvertResultが機能しない(?)件について

Post by aaaaa »

早速のご回答ありがとうございます!
なかなか使い始めで理解が足りていなかったのですが、仕様全体の理解にもつながるご回答いただけてとてもありがたいです。
今後ともよろしくお願いいたします。
Post Reply