ʲôÊÇBehaviorTree.cpp
BehaviorTree.cppÊÇÒ»ÖÖ»ùÓÚÐÐΪÊ÷µÄ±à³Ì¿ò¼Ü£¬ÓÃÓÚ¹¹½¨¸´Ôӵľö²ßϵͳ¡£ÐÐΪÊ÷ÊÇÒ»ÖÖ¸ßЧµÄ¾ö²ßͼÐλ¯±íʾ·½·¨£¬Í¨¹ý²ã´Î»¯µÄ½Úµã½á¹¹£¬½«¸´ÔÓµÄÐÐΪ·Ö½âΪ¼òµ¥µÄ¾ö²ßµ¥Ôª£¬´Ó¶øÊµÏÖ¶Ô¸´ÔÓÈÎÎñµÄ×Ô¶¯»¯¿ØÖÆ¡£ËüµÄºËÐÄ˼ÏëÊÇͨ¹ý²»Í¬ÀàÐ͵Ľڵ㣨ÈçÈÎÎñ½Úµã¡¢¿ØÖƽڵãµÈ£©×éºÏ£¬¹¹½¨³ö?Ò»¸ö¿ÉÒÔ¶¯Ì¬µ÷ÕûºÍÖ´ÐеÄÐÐΪÊ÷¡£
¹¹½¨¸´ÔÓÂß¼
ʹÓÃComposite½ÚµãºÍ¿ØÖƽڵ㣬¹¹½¨¸ü¸´ÔÓµÄÂß¼¡£ÀýÈ磬ʹÓÃSelector½Úµã¿ÉÒÔʵÏÖ¶à¸öÈÎÎñµÄÑ¡ÔñÂß¼£º
autoselector=bt::Selector::Create("TaskSelector");selector->AddChild(moveTask);selector->AddChild(anotherTask);root->AddChild(selector);
1º¯Êý¶ÔÏó£¨Functors£©
º¯Êý¶ÔÏóÊÇSTLÖеÄÒ»¸öÖØÒª¸ÅÄҲ³ÆÎª¡°º¯Êý¶ÔÏó¡±»ò¡°º¯ÊýÆ÷¡±¡£ËüÃÇÊÇʵÏָ߽׺¯ÊýµÄÖØÒª¹¤¾ß¡£
´´½¨ºÍʹÓú¯Êý¶ÔÏó£º#includevoidmyFunction(){std::cout<<"Thisisafunctionobject."<func=myFunction;func();//µ÷Óú¯Êý¶ÔÏóreturn0;}
3ʹÓÃIDE
IDE£¨¼¯³É¿ª·¢»·¾³£©ÌṩÁ˷ḻµÄ¹¦ÄÜ£¬ÓÐÖúÓÚÌá¸ß¿ª·¢Ð§ÂÊ¡£
VisualStudio£ºÌṩ·á¸»µÄµ÷ÊÔ¹¤¾ß¡¢´úÂë±à¼¹¦ÄܺÍÏîÄ¿¹ÜÀí¹¦ÄÜ¡£Code::Blocks£ºÃâ·Ñ¿ªÔ´µÄIDE£¬Ö§³Ö?¶àÖÖ±àÒëÆ÷£¬ÈçGCCºÍClang¡£CLion£ºJetBrains¿ª·¢µÄÖÇÄÜIDE£¬ÊʺÏC++¿ª·¢£¬Ìṩǿ´óµÄ´úÂë·ÖÎöºÍµ÷ÊÔ¹¦ÄÜ¡£
¶¨ÒåÈÎÎñ½Úµã
¶¨Òå¾ßÌåµÄÈÎÎñ½Úµã¡£ÕâЩ½Úµã½«¹¹³É?ÐÐΪÊ÷µÄ¾ßÌåÂß¼¡£ÀýÈ磬һ¸ö¼òµ¥µÄÒÆ¶¯ÈÎÎñ½Úµã¿ÉÄÜÈçÏÂËùʾ£º
automoveTask=bt::ActionNode::Create("Move",(bt::Context&context){//ÒÆ¶¯Âß¼returnbt::NodeStatus::SUCCESS;});
ΪʲôѡÔñcpp¹Ù·½Èí¼þÏÂÔØ
°²È«ÐÔ£ºÊ¹Óùٷ½Èí¼þÏÂÔØÇþµÀ¿ÉÒÔÈ·±£ÄúÏÂÔØµÄÈí¼þÊǰ²È«¡¢Î´±»´Û¸ÄµÄÔ°æ¡£Õâ¶ÔÓÚÐèÒª¸ß°²È«ÐԵıà³ÌÈÎÎñÓÈÎªÖØÒª¡£
Îȶ¨ÐÔ£º¹Ù·½ÌṩµÄÈí¼þ°æ±¾¾¹ýÑϸñµÄ²â?ÊÔºÍÓÅ»¯£¬È·±£ÆäÔÚ¸÷ÖÖ»·¾³ÏµÄÎȶ¨ÐԺͿɿ¿ÐÔ¡£
¸üм°Ö§³Ö£º¹Ù·½Èí¼þÏÂÔØÆ½Ì¨Í¨³£?»á¼°Ê±·¢²¼×îа汾£¬²¢Ìṩ³ÖÐøµÄ¼¼ÊõÖ§³Ö£¬Õâ¶ÔÓÚ¿ª·¢Õß±£³ÖÈí¼þµÄÇ°ÑØÐԺ͹¦ÄÜÐÔÖÁ¹ØÖØÒª¡£
ÔÚÕâÆªÎÄÕÂÖУ¬ÎÒÃÇÏêϸ½éÉÜÁËÈçºÎʹÓÃcpp¹Ù·½Èí¼þ½øÐи߼¶±à³Ì£¬°üÀ¨¸ß¼¶±àÒëÑ¡Ïî¡¢¶àÏ̱߳à³Ì?¡¢¸ß¼¶µ÷ÊÔ¼¼ÇɺͳÖÐø¼¯³É¡£Ï£ÍûÕâЩÐÅÏ¢Äܹ»°ïÖúÄú¸üºÃµØÕÆÎÕcpp¹Ù·½Èí¼þ£¬Ìá¸ßÄúµÄ¿ª·¢Ð§ÂʺʹúÂëÖÊÁ¿¡£ÎÞÂÛÄúÊdzõѧÕß»¹ÊÇ×ÊÉ·¢Õߣ¬ÕâЩ¹¤¾ßºÍ¼¼Çɶ¼½«ÎªÄúµÄ±à³ÌÖ®ÂÃÌṩǿÓÐÁ¦µÄÖ§³Ö¡£
У¶Ô£ºÀ¾ü(1C0m4pJyqZtPma0S7t9ZFfz4hTykKag)


