UE4ã§ããããAIå®è£
ã«ææŠïŒïŒ-ãã®2
ããã«ã¡ã¯ãããããšãã§ãïŒ
ä»åã¯ååã®ç¶ãã§ãïŒååã®ã¯AIãå®è£
ãããŸã§ã®æºåãããŸããïŒ
ä»åã¯å®éã«ç°¡åãªè¿œãããã£ããããŠã¿ããããªã£ãŠæããŸãã
ãããªæãã«ãªãã°OKã§ã
ã§ã¯ïŒè¡ã£ãŠã¿ãŸãããïŒïŒ
Continue Reading
ãŸãã¯ããã€ãå¿
èŠã«ãªããã®ããããŸãã
â AIControllerãç¶æ¿ãããã«ãŒããªã³ãã¯ã©ã¹
â¢ããã€ãã¢ããªãŒ
â£ã¯ãµãŒãã¹ã£ãŠèšããŸããäœãã¿ã€ãã³ã°ã¯ä»ãšå°ãéãã®ã§æåããçšæããªããŠãè¯ãã§ãã
â ã¯ãã«ãŒããªã³ãã®èŠªã¯ã©ã¹éžæã®æã«ãã¹ãŠã®ã¯ã©ã¹ã®äžããAIControllerãéžæ
â¡â¢ã¯ãæ°èŠè¿œå ã®AIã®äžã«æããŸãã
ãŸããä»åã¯ç°¡åã«ããããã£ãããããã«
1.èŠçã«å
¥ã£ããã®ãã¿ãŒã²ããã£ã³ã°
2.ã¿ãŒã²ããã远ããããã远ãããããå°ã®æãŠãŸã§è¿œããããã
ãå®è£
ããŠã¿ãŸãïŒ
ã§ã¯ãŸãååäœæããSenseManãããã£ãŠã¿ãŸãããïŒ
PawnSensingã³ã³ããŒãã³ãã®OnSeePawnã€ãã³ãã䜿ã£ãŠèŠããŠããããŒã³ãä¿åããã
PawnSensingã®è©³çްç»é¢ã®äžã®æ¹ã®ã€ãã³ãããOnSeePawnã®ãã¿ã³ãã¯ãªãã¯ããŸããã¯ãªãã¯ããåã¯âã®ããŒã¯ã«ãªã£ãŠããšæããŸãã
ãããããšãã«ãŒããªã³ãäžã«OnSeePawnã€ãã³ãã远å ãããŸãïŒ
ãã®OnSeePawnã€ãã³ãã¯PawnSensingã³ã³ããŒãã³ãã«ãã£ãŠããŒã³ãèŠçã«å
¥ã£ãŠããæäžã«åŒã°ãç¶ããŸãã
èŠçã«å
¥ã£ãç¬éã ãåŒã°ããã®ããªã£ãŠæã£ãã®ã§ããèŠçã«å
¥ã£ãŠããéåžžã«åŒã°ããŠããŸããã
ä»åã¯å€æ°ã«ã¢ã¯ã¿ãŒåã®seePawnãšããã®ãäœã£ãŠèŠããŠããããŒã³ãåžžã«ä¿åããŠããŸãã
ããã ãã§ããããã ããªãã§ãã
â¡ã®ãã©ãã¯ããŒãã®èšå®ïŒ
ãã©ãã¯ããŒããšã¯ïŒ
Blackboard ã¢ã»ããã«ã¯ã ããã€ãã¢ããªãŒ ããåç
§ããã AI ã³ã³ãããŒã©ã®ç¹å®ã®ã€ã³ã¹ã¿ã³ã¹ã«å¿
èŠãªããŒã¿ããã¹ãŠæ ŒçŽãããŠããŸãã
ãšãEpicGamesã®UE4ã¹ã¿ãŒãã¢ããã¬ã€ããµã€ãã«è¡šèšãããŠããŸãã
ã€ãŸããAIãäœãéã«äœ¿çšããããã€ãã¢ããªãŒã§äœ¿ã倿°ããããã¿ã€ã宣èšããŠããããã®ãã®ã§ããã
æèŠçã«ã¯ããã€ãã¢ããªãŒçšã®ããããŒãã¡ã€ã«ã£ãŠæãã ãšæã£ãŠããŸãã
ãã©ãã¯ããŒãã®èšå®ïŒ
èšå®ãšèšã£ãŠãã倿°ãçšæããã ãã§ãïŒ
ä»åã¯ãã©ãã¯ããŒãã®ãšãã£ããç»é¢ã§æ°èŠããŒããobjectåãéžæããŠå€æ°ãäœããŸããã
ä»ã«ãvector/float/boolãªã©ãªã©ãããŸãã
â»InstanceSyncedã«ãã§ãã¯ãå
¥ãããšãã®å€æ°ã¯staticã«ãªããŸããå
šãŠã®ã€ã³ã¹ã¿ã³ã¹ã§å
±æãããããã«ãªãã£ãŠããšã§ããã
ã§ã¯ãéã«â¢ã®ããã€ãã¢ããªãŒã®èšå®ãããŠãããŸãïŒ
ããã€ãã¢ããªãŒãšã¯ROOTããåŠçãæµããŠããSelectorãSequenceçã®ã³ã³ããžããã§åŠçãåå²ãããŠåŠçãçµããã®ã§ãã
ã¹ãã€ããã·ã³ãšéã£ãŠç¶æ
ã®ç§»ãå€ããã§ã¯ãªãã®ã§æ¡ä»¶ããã¡ããã¡ãããªããŠæžã¿ãŸãã
解説ãšãã¯ã¹ã¿ãŒãã¢ããã¬ã€ãã«ãŸãã£ãšèŒã£ãŠãã®ã§ãã¡ããâŠïŒäžžæãïŒ
ãã£ã©ãèŠã€ãããããã€ãã¿ãŒã²ããã«èšå®
æ»ã¬ãŸã§è¿œãç¶ããŠãã
ãªãæãã«ããŸãã
æ©éçµãã§ã¿ãŸãããïŒ
å
šäœã§ãããªããŸãã
ã»ã¬ã¯ã¿ãŒã«ä»ããŠãããµãŒãã¹ãäžè¿°ããâ£ã§ãã
ãµãŒãã¹ãšã¯åºæ¬çã«ãã©ãã¯ããŒãã®å€ãèšå®ãããšãã«äœ¿ããŸãã
ãšãã£ã¿ãŒç»é¢ã®æ°èŠãµãŒãã¹ã®è¿œå ããäœããŸãã
å
ã»ã©äœã£ãSeePawnãããã£ãŠããŠããã ãã§ãã
SetBlackBoardValueããŒãã®Keyã¯ãµãŒãã¹ã®å€æ°ã«BlackBoardKeySelectoræ¹ã®å€æ°ãäœããããªãã¯ïŒãç®ç®ã±ã£ã¡ãïŒã«ããŠãã ããã
ãããšããµãŒãã¹ãã»ããããæã®è©³çްæ¬ã§ãã©ãã¯ããŒãã®ããŒã®ååã§èšå®ã§ããŸãã
ã§ãç¶ããŸããŠã»ã¬ã¯ã¿ãŒããç¢å°ã䌞ã°ããŸããŠãã·ãŒã±ã³ã¹ãäœããŸãã
ãã®ã·ãŒã±ã³ã¹ãå³ã¯ãªãã¯ãããã³ã¬ãŒã¿ãŒã远å âBlackBoard
ã§ããã³ã¬ãŒã¿ãŒã远å ããŸãã
ãã©ãã¯ããŒããã³ã¬ãŒã¿ãŒã¯ãã©ãã¯ããŒãäžã®æå®ãã倿°ã«å€ãã»ãããããŠãããã©ãããæå®ããŸãã
詳现æ¬ãããªæããtargetActorã«å€ãã»ãããããŠããããåŠçãéããŸãã
ã§ãããã®ã·ãŒã±ã³ã¹ããç¢å°ã䌞ã°ããŠãTaskããMoveToã远å ããŸãã
MoveToã¯ãã©ãã¯ããŒãäžã®ã¢ã¯ã¿ãŒå€æ°ããã¯ã¿ãŒå€æ°ãæå®ãããšãããŸã§åæã«ç§»åããŠããã颿°ã§ãã
䟿å©ã ã(Ïã»âã»)ÏïŒïŒïŒ
AcceptableRadiusã£ãŠããã®ã¯ã©ãã ãè¿ã¥ããããŽãŒã«ã«ãããã£ãŠããè·é¢ã®ããšã§ãã
BlackBoard KeyããTargetActorã«ãªã£ãŠããã®ã§ãŽãŒã«å°ç¹ãã¿ãŒã²ããã¢ã¯ã¿ãŒã«èšå®ã§ããŠããŸãã
ã§ã¯æ¬¡ã«AIControllerã®èšå®ãããŸãã
äœæããAIControllerã«ä»¥äžã远å ããŸããããã ãã§ãã
ãããŠãã®AIãæèŒãããããã£ã©ã¯ã¿ãŒãã«ãŒããªã³ããå°ã倿ŽããŸãã
ãã«ãŒããªã³ããéããŠPawnã®AI Controller Classãäœæããç©ã«å€æŽããŸãããã
ã§ã¯ãã»ããšã«æåŸã®æåŸã«ã¬ãã«äžã«NavMeshBoundsVolumeã远å ããŠã¹ã±ãŒãªã³ã°ãããã£ãŠå
šäœãèŠããŸãã
ã¹ã¯ã·ã§ã®æ§ã«å
šäœäœãç·ã«ãªã£ãŠããã°OK
ç·ã®éšåãAIãæèŒãããã£ã©ãç§»åã§ããå°åž¯ã§ãã
ãããããããããèšå®ãããäœã£ããã£ã©ã¯ã¿ãŒãã«ãŒããªã³ããã¬ãã«äžã«èšçœ®ãããå®äºã§ãïŒ
ãã远ãããã£ãïŒïŒïŒ
åé ã®åç»ã¿ããã«ãªã£ãŠããã°OKã§ãïŒ