cpp¹Ù·½Èí¼þÏÂÔØ-cppÎÞ²î±ð¹Ù·½Èí¼þÏÂÔØ.°²×¿

À´Ô´£ºÖ¤È¯Ê±±¨Íø×÷Õߣº
×ÖºÅ

ʲôÊÇ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)

ÔðÈα༭£º ÑîÕÕ
ΪÄãÍÆ¼ö
Óû§ÆÀÂÛ
µÇ¼ºó¿ÉÒÔ·¢ÑÔ
ÍøÓÑÆÀÂÛ½ö¹©Æä±í´ï¸öÈË¿´·¨£¬²¢²»±íÃ÷֤ȯʱ±¨Á¢³¡
ÔÝÎÞÆÀÂÛ