如何创建一个行为树
行为树,类似于状态机,无非是在正确的时间在正确的条件下调用回调的一种机制。
此外,我们将会交替使用__“callback"和"tick”__这两个词。
这些回调函数里发生的事情取决于你。
在这个教程系列中,大部分时间,Actions 只会在控制台上打印一些信息,但请记住,真实的“production”代码可能会做一些更复杂的事情。
进一步,我们将创建这棵简单的树:
如何创建自己的 ActionNodes
创建 TreeNode
的默认(也是推荐的)方式是通过继承。
// Example of custom SyncActionNode (synchronous action)
// without ports.
class ApproachObject : public BT::SyncActionNode
{
public:
ApproachObject(const std::string& name) :
BT::SyncActionNode(name, {})
{
}
// You must override the virtual function tick()
BT::NodeStatus tick() override
{
std::cout << "ApproachObject: " << this->n