ºÇ½ª¹¹¿·¡§
orika_ex_miyako 2022ǯ12·î30Æü(¶â) 17:02:51ÍúÎò
Æ°²è¥Õ¥¡¥¤¥ë¤Ø¤Î¥ê¥ó¥¯
¡¡°Ê²¼¤ÎÆâÍƤǽçÈ֤˼ÂÁõ¤ò¿Ê¤á¤Æ¤¤¤¤Þ¤¹¡£
¼ê½ç£·¡¡¡¼¥¥ã¥é¥¯¥¿¡¼¤Î·ÐÏ©°ÜÆ°µ¡Ç½¡¼
£±£°¡¥PlayerNavigationController ¥¹¥¯¥ê¥×¥È¤ÎºîÀ®
¡¡¡ã¿·¤·¤¯³Ø½¬¤¹¤ëÆâÍÆ¡ä
¡¡¡¦RequireComponent(typeof(¥¯¥é¥¹Ì¾/¥³¥ó¥Ý¡¼¥Í¥ó¥È̾))]°À ¡¡¡¦SerializeField °À ¡¡¡¦TryGetComponent ¥á¥½¥Ã¥É¤È out ¥¡¼¥ï¡¼¥ÉÀë¸À ¡¡¡¦Vector3.Distance() ¥á¥½¥Ã¥É¡¡¡¼£²ÅÀ´Ö¤Î°ÌÃÖ¾ðÊ󤫤éµ÷Î¥¤ÈÊý¸þ¤ò»»½Ð¤¹¤ë¡¼ ¡¡¡¦NavMeshAgent ¤ËÍÑ°Õ¤µ¤ì¤Æ¤¤¤ëÊÑ¿ô¤È¥á¥½¥Ã¥É ¡¡¡¡¡¡¡¡¡¼£±¡¥NavMeshAgent.destination ÊÑ¿ô(SetDestination ¥á¥½¥Ã¥É)¡¼ ¡¡¡¡¡¡¡¡¡¼£²¡¥NavMeshAgent.speed ÊÑ¿ô¡¼ ¡¡¡¡¡¡¡¡¡¼£³¡¥NavMeshAgent.ResetPath ¥á¥½¥Ã¥É¡¼
¡¡¥¢¥¯¥·¥ç¥ó¥²¡¼¥à¤Ç¤Ï¤¢¤ê¤Þ¤¹¤¬¡¢º£²ó¤Î¥²¡¼¥à¤Ï¡¢½½»ú¥¡¼¤ÎÁàºî¤ÇǤ°Õ¤Î°ÜÆ°¤ò¹Ô¤¦¥¿¥¤¥×¤Ç¤Ï¤Ê¤¯¡¢
¥¹¥Æ¡¼¥¸Æâ¤ò¥¿¥Ã¥×¤¹¤ë¤³¤È¤Ç¡¢¤½¤ÎÃÏÅÀ¤Þ¤Ç¼«Æ°Åª¤Ë·ÐÏ©¤ò·èÄꤷ¤Æ°ÜÆ°¤¹¤ë¥¿¥¤¥×¤òÍøÍѤ·¤Þ¤¹¡£
¡¡¤½¤Î¤¿¤á¡¢Á°²ó¤Î¼ê½ç¤Ç¤Ï AI ¤Ë¤è¤ë·ÐÏ©¤Î·×»»¤ò¹Ô¤¦¤¿¤á¡¢NavMeshAgent ¤Î½àÈ÷¤ò¹Ô¤¤¤Þ¤·¤¿¡£
º£²ó¤Ï¤½¤Á¤é¤Îµ¡Ç½¤òÍøÍѤ·¤Æ¥¥ã¥é¥¯¥¿¡¼¤òÁàºî¤¹¤ë¤¿¤á¤Ë¥¹¥¯¥ê¥×¥È¤òºîÀ®¤·¤Æ¡¢µ¡Ç½¤òÀ©¸æ¤·¤Þ¤¹¡£
¡¡º£¸å¿¤¯¤Î¥¹¥¯¥ê¥×¥È¤òºîÀ®¤·¤Æ¤¤¤¯¤³¤È¤Ë¤Ê¤ê¤Þ¤¹¤Î¤Ç¡¢¥¹¥¯¥ê¥×¥È¤ò´ÉÍý¤¹¤ë¤¿¤á¤Î¥Õ¥©¥ë¥À¤òºîÀ®¤·¤Æ¤«¤é
¥¹¥¯¥ê¥×¥È¤ÎºîÀ®¤ËÆþ¤ê¤Þ¤·¤ç¤¦¡£
¡¡Project ¥Õ¥©¥ë¥ÀÆâ¤Î¶õ¤¤¤Æ¤¤¤ë¾ì½ê¤Ç±¦¥¯¥ê¥Ã¥¯¤ò¤¹¤ë¤«¡¢Project ¥¿¥Ö¤Î²¼¤Ë¤¢¤ë + ¥Ü¥¿¥ó¤ò²¡¤·¤Æ¥á¥Ë¥å¡¼¤òɽ¼¨¤·¤Þ¤¹¡£
Create ¢ª Folder ¤òÁªÂò¤·¡¢Ì¾Á°¤ò Scripts ¤ËÊѹ¹¤·¤Þ¤¹¡£
Scripts ¥Õ¥©¥ë¥ÀºîÀ®

¡¡Â³¤¤¤Æ¡¢¤½¤Î Scripts ¥Õ¥©¥ë¥À¤ò¥À¥Ö¥ë¥¯¥ê¥Ã¥¯¤·¤Æ¥Õ¥©¥ë¥À¤ò³«¤¡¢¤½¤ÎÃæ¤ÇºÆÅÙ±¦¥¯¥ê¥Ã¥¯¤ò¤·¤Æ¥á¥Ë¥å¡¼¤òɽ¼¨¤·¡¢
Create ¢ª C# Script ¤òÁªÂò¤·¤Þ¤¹¡£¿·¤·¤¤¥¹¥¯¥ê¥×¥È¡¦¥Õ¥¡¥¤¥ë¤¬ºîÀ®¤µ¤ì¤Þ¤¹¤Î¤Ç¡¢Ì¾Á°¤ò PlayerNavigationController ¤ËÊѹ¹¤·¤Þ¤¹¡£
̾Á°¤ò´Ö°ã¤¨¤Æ¤·¤Þ¤Ã¤¿¾ì¹ç¤Ë¤Ï¡¢°ìÅÙºï½ü¤·¤Æ¡¢¤â¤¦°ìÅÙºîÀ®¤·Ä¾¤·¤Æ¤¯¤À¤µ¤¤¡£
¡¡¿·¤·¤¤µ¡Ç½¤ò¤¿¤¯¤µ¤óÍøÍѤ·¤Æ¤¤¤Þ¤¹¤Î¤Ç¡¢¤³¤Î¤¢¤È¤ËÀâÌÀ¤òÍÑ°Õ¤·¤Æ¤¤¤Þ¤¹¡£
¥¹¥¯¥ê¥×¥È¤Î½èÍý¤òµ½Ò¸å¤ËÀâÌÀ¤òÆɤó¤ÇÍý²ò¤ò¿¼¤á¤Æ¤¯¤À¤µ¤¤¡£
¡¡¤Ê¤ª Ray ¤È Physics.Raycast ¥á¥½¥Ã¥É¤ÎÀâÌÀ¤Ë¤Ä¤¤¤Æ¤Ï³ä°¦¤·¤Æ¤¤¤Þ¤¹¡£
Unity ¤Î¶µ²Ê½ñ¤Ë¤Æ³Ø½¬ºÑ¤Ç¤¹¤Î¤Ç¡¢¤½¤Á¤é¤ÇÉü½¬¤ò¤·¤Æ¤ª¤¤¤Æ¤¯¤À¤µ¤¤¡£
PlayerNavigationController.cs
¡¡¥¹¥¯¥ê¥×¥È¤òºîÀ®¤·¤¿¤é¥»¡¼¥Ö¤ò¹Ô¤¤¤Þ¤¹¡£Ctrl + Shift + S ¥¡¼¤Ç¥»¡¼¥Ö¤Ç¤¤Þ¤¹¡£
¼«Æ°Åª¤Ë Unity ¤È¤ÎƱ´ü¤¬¹Ô¤ï¤ì¤Æ¡¢¥¨¥é¡¼¤¬¤¢¤ë¾ì¹ç¤Ë¤Ïɽ¼¨¤µ¤ì¤ë¤è¤¦¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£
¡¡[] ¤Ç½ñ¤«¤ì¤¿¾ðÊó¤Ï°À¡ÊAttribute¡Ë¤È¸Æ¤Ð¤ì¤ë¤â¤Î¤Ç¤¹¡£
°À¤òÉÕÍ¿¤¹¤ë»ö¤Ç¾¤ÎÊÑ¿ô¤È¶èÊ̤·¤¿¤ê¡¢ÆÃÊ̤ʵóÆ°¤òÀßÄꤹ¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£
[RequireComponent(typeof(Rigidbody))] public class PlayerController : MonoBehaviour {
¡¡¤³¤ÎRequireComponent(¥ê¥¯¥ï¥¤¥¢¡¦¥³¥ó¥Ý¡¼¥Í¥ó¥È)°À¤Ï¡¢¥¯¥é¥¹Ì¾¤Î£±¹Ô¾å¤Ëµ½Ò¤¹¤ë°À¤Ç¤¹¡£
¡¡¤³¤Î°À¤Î(°ú¿ô)¤Ç»ØÄꤷ¤¿¥¯¥é¥¹¤ä¥³¥ó¥Ý¡¼¥Í¥ó¥È¤¬¡¢¤³¤Î¥¹¥¯¥ê¥×¥È¤¬¥¢¥¿¥Ã¥Á¤µ¤ì¤Æ¤¤¤ë¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤Ë¥¢¥¿¥Ã¥Á¤µ¤ì¤Æ¤¤¤Ê¤¤¤È¡¢Console ¥Ó¥å¡¼¤Ë¥¨¥é¡¼¤¬½Ð¤ë¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£¡¡
¡¡¤Þ¤¿¤³¤Î°À¤¬ÄêµÁ¤µ¤ì¤Æ¤¤¤ë¥¹¥¯¥ê¥×¥È¤ò¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤Ë¥¢¥¿¥Ã¥Á¤¹¤ë¤È¡¢°ú¿ô¤Ç»ØÄꤷ¤Æ¤¤¤ë¥³¥ó¥Ý¡¼¥Í¥ó¥È¤¬¼«Æ°Åª¤Ë¥¢¥¿¥Ã¥Á¤µ¤ì¤Þ¤¹¡£(º£²ó¤Ï Rigidbody ¥³¥ó¥Ý¡¼¥Í¥ó¥È)
¤Ä¤Þ¤ê¤³¤Îµ¡Ç½¤Ï¡¢¥¹¥¯¥ê¥×¥È¤òÀµ¾ï¤ËÆ°ºî¤µ¤»¤ë¤¿¤á¤ËɬÍפʥ³¥ó¥Ý¡¼¥Í¥ó¥È¤ò¶¯À©Åª¤ËÍÑ°Õ¤·¤Æ¤¯¤ì¤ëÆâÍƤˤʤäƤ¤¤Þ¤¹¡£
¡¡
¡¡º£²ó¤³¤Î PlayerController ¥¹¥¯¥ê¥×¥È¤Ë¤è¤ê Player ¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤ò°ÜÆ°¤µ¤»¤ë¤Ë¤Ï Rigidbody ¥³¥ó¥Ý¡¼¥Í¥ó¥È¤¬É¬Íפˤʤê¤Þ¤¹¡£
[RequireComponent(typeof(Rigidbody))]°À¤òÄɲ乤뤳¤È¤Ë¤è¤Ã¤Æ¡¢¼«Æ°Åª¤Ë¥³¥ó¥Ý¡¼¥Í¥ó¥È¤Î¥¢¥¿¥Ã¥Á¤ò¹Ô¤¦¤È¤È¤â¤Ë¡¢¥¢¥¿¥Ã¥Á¤µ¤ì¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ë¤Ï¥¨¥é¡¼¤¬½Ð¤ë¤è¤¦¤Ë¤·¤Æ¤¤¤Þ¤¹¡£
»²¹Í¥µ¥¤¥È
Unity ¸ø¼°¥¹¥¯¥ê¥×¥È¥ê¥Õ¥¡¥ì¥ó¥¹
RequireComponent
¡¡ÊÑ¿ô¤ÎÀë¸À¤Ë¹ç¤ï¤»¤ÆÀë¸À¤Ç¤¤ë¡¢Â°À¾ðÊó¤È¸Æ¤Ð¤ì¤ë¤â¤Î¤Î£±¤Ä¤Ç¤¹¡£ÊÑ¿ô¤ÎÀë¸À¤ÎÁ°¤Ë [ ] ÉÕ¤¤Ç½ñ¤«¤ì¤¿ÆâÍƤ¬Â°À¾ðÊó¤È¤Ê¤ê¤Þ¤¹¡£
¡¡º£²óÍøÍѤ·¤Æ¤¤¤ë°À¤Ï SerializeField ¤È¤¤¤¦Â°À¾ðÊó¤Ç¤¹¡£¤³¤Îµ¡Ç½¤Ï¡¢¥¤¥ó¥¹¥Ú¥¯¥¿¡¼¾å¤ËÊÑ¿ô¤òɽ¼¨¤µ¤»¤ë¡¢¤È¤¤¤¦¤â¤Î¤Ç¤¹¡£
¡¡¼ç¤Ë private ½¤¾þ»Ò¤È¥»¥Ã¥È¤ÇÍѤ¤¤é¤ì¡¢¥¢¥µ¥¤¥ó¤ò¥¤¥ó¥¹¥Ú¥¯¥¿¡¼¾å¤Ç²Äǽ¤Ë¤¹¤ë¤â¤Î¤Î¡¢ÊÑ¿ô¤Î»²¾ÈÀ褬³°Éô¤Î¥¹¥¯¥ê¥×¥È¤Ë¤Ê¤¤(public¤ÎɬÍפ¬¤Ê¤¤)¾ì¹ç¤ËÍøÍѤ·¤Þ¤¹¡£
¡¡¤¿¤È¤¨¤Ð Button¥³¥ó¥Ý¡¼¥Í¥ó¥È¤äText¥³¥ó¥Ý¡¼¥Í¥ó¥È¤È¤¤¤Ã¤¿¡¢¥¢¥µ¥¤¥ó¤Ï¤¹¤ë¤â¤Î¤Î¡¢¤½¤ÎÊÑ¿ô¤ÎÍøÍÑÀ褬¾¤Î¥¹¥¯¥ê¥×¥È¤Ë¤Ï¤Ê¤¤¤è¤¦¤Ê¤â¤Î¡¢¤Ë¤ÏÍøÍѤ·¤ä¤¹¤¤¤Ç¤¹¡£
¡¡º£²ó¤Ï¥×¥ì¥¤¥ä¡¼¤Î°Üư®ÅÙ¤òÀßÄꤹ¤ë¤¿¤á¤ÎÊÑ¿ô¤ÎÀë¸À¤Ë°À¾ðÊó¤òÉÕÍ¿¤·¤Æ¤¤¤Þ¤¹¡£
°Üư®Å٤ξðÊó¤ò¥¤¥ó¥¹¥Ú¥¯¥¿¡¼¤Ëɽ¼¨¤µ¤»¤ë¤³¤È¤Ë¤è¤ê¡¢°Üư®ÅÙ¤ÎÄ´À°¤Ë¤¢¤¿¤ê¡¢
¥¹¥¯¥ê¥×¥ÈÆâ¤Ç¤½¤ÎÅÔÅÙ½ñ¤Ä¾¤µ¤Ê¤¯¤Æ¤â¤è¤¤¤è¤¦¤Ë¤¹¤ëÌÜŪ¤ÇÍøÍѤ·¤Æ¤¤¤Þ¤¹¡£
»²¹Í¥µ¥¤¥È
Unity ¸ø¼°¥¹¥¯¥ê¥×¥È¥ê¥Õ¥¡¥ì¥ó¥¹
SerializeField
if (!TryGetComponent(out agent)) { Debug.Log("NavMeshAgent ¤ò¼èÆÀ½ÐÍè¤Þ¤»¤ó¡£"); return; }
¡¡Unity2019.2°Ê¹ß¤ËÄɲ䵤줿¥á¥½¥Ã¥É¤Ç¤¹¡£½èÍý·ë²Ì¤È¤·¤Æ bool ·¿¤ÇÌá¤êÃͤòÊÖ¤·¤Æ¤¯¤ì¤Þ¤¹¡£
¤³¤Î¤È¤¤Î½èÍý·ë²Ì¤È¤¤¤¦¤Î¤Ï¡¢»ØÄꤷ¤¿¥³¥ó¥Ý¡¼¥Í¥ó¥È¤Î·¿¤Î¼èÆÀ¤ò¹Ô¤¤¡¢¤½¤ì¤¬¼èÆÀ¤Ç¤¤ì¤Ðtrue¡¢¼èÆÀ¤Ç¤¤Ê¤±¤ì¤Ðfalse¤¬Ìá¤ê¤Þ¤¹¡£
¡¡¤Þ¤¿ out ¥¡¼¥ï¡¼¥É¤Ë¤è¤ëÀë¸À¤¬¤¢¤ê¤Þ¤¹¡£
¡¡out ¥¡¼¥ï¡¼¥ÉÀë¸À¤ò¹Ô¤¦¤È¡¢out ¤òÉÕ¤±¤¿°ú¿ô¤Ç»ØÄꤷ¤¿ÊÑ¿ô¤Ï¥á¥½¥Ã¥ÉÆâ¤Çɬ¤º·ë²Ì¤¬Æþ¤ë¤³¤È¤¬Êݾڤµ¤ì¤ë¤â¤Î¤Ç¤¹¡£
¤½¤Î¤¿¤á¡¢½èÍý·ë²Ì¤ÎÌá¤êÃͤ¬ true ¤Î¾ì¹ç¤Ë¤Ïɬ¤º¡¢¤³¤Î out ¤Î¸å¤ËÀë¸À¤·¤¿ÊÑ¿ôÆâ¤Ë·¿¤¬ÂåÆþ¤µ¤ì¤Þ¤¹¡£
¡¡Ã¼Åª¤Ë¤¤¤¦¤Ê¤é¤Ð¡¢GetComponent ¥á¥½¥Ã¥É¤Î½èÍý¤Ë²Ã¤¨¤Æ¡¢¤½¤Î½èÍý¤ÎÀ®ÈÝȽÄê(¥³¥ó¥Ý¡¼¥Í¥ó¥È¤¬¼èÆÀ½ÐÍ褿¤«¡¢½ÐÍè¤Ê¤«¤Ã¤¿¤«)¤òƱ»þ¤Ë¹Ô¤Ã¤Æ¤¯¤ì¤ë¥á¥½¥Ã¥É¤Ë¤Ê¤ê¤Þ¤¹¡£
¡ã¼ÂÁõÎã¡¡ä
private Rigidbody rb; TryGetComponent(out rb);
¡ã¼ÂÁõÎ㢡¡Ìá¤êÃͤò³èÍÑ¡ä
if(col.gameObject.TryGetComponent(out Rigidbody rigid)) { // ½èÍý¤ò½ñ¤¯ }
¡¡º£²ó¤Ï¼ÂÁõÎ㡤νèÍý¤È¤·¤ÆÍøÍѤ·¤Æ¤¤¤Þ¤¹¡£¥¹¥¯¥ê¥×¥ÈÆâ¤Ë TryGetComponent ¥á¥½¥Ã¥É¤òľÀܵ½Ò¤·¤¿¾ì¹ç¡¢GetComponent ¥á¥½¥Ã¥É¤ÈƱÍͤˡ¢
¤³¤Î¥¹¥¯¥ê¥×¥È¤¬¥¢¥¿¥Ã¥Á¤·¤Æ¤¤¤ë¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤Î¥³¥ó¥Ý¡¼¥Í¥ó¥È¤«¤é»ØÄꤵ¤ì¤Æ¤¤¤ë¼ïÎà¤Î¥³¥ó¥Ý¡¼¥Í¥ó¥È¤ò¼èÆÀ¤·¤Æ¤Þ¤¹¡£
¤½¤ì¤ò out ¥¡¼¥ï¡¼¥É¸å¤Î rb ÊÑ¿ô¤ËÂåÆþ¤·¤Æ¤¤¤Þ¤¹¡£GetComponent ¥á¥½¥Ã¥É¤Î¤è¤¦¤Ë<·¿°ú¿ô>¤ò»ØÄꤷ¤Æ¤¤¤Ê¤¤¤Î¤Ï¡¢rb ÊÑ¿ô¤Ë¤è¤Ã¤Æ·¿¤ò¿äÏÀ¤¹¤ë¤³¤È¤¬²Äǽ¤Ç¤¢¤ë¤¿¤á¤Ç¤¹¡£
¡¡out ¥¡¼¥ï¡¼¥É°Ê¹ß¤Ë¤Ï¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤«¤é¼èÆÀ¤·¤¿¤¤·¿¤ÈÊÑ¿ô¤òÀë¸À¤·¤Þ¤¹¡£º£²ó¤Î¤è¤¦¤Ë»öÁ°¤ËÊÑ¿ô¤ÎÀë¸À¤ò¤·¤Æ¤¤¤ë¾ì¹ç¤Ë¤Ï¡¢ÊÑ¿ô¤Î¤ß¤òÍÑ°Õ¤·¤Æ¤ª¤¯¤³¤È¤¬½ÐÍè¤Þ¤¹¡£
¡¡¼ÂÁõÎ㢤ξì¹ç¤Ï¡¢¤â¤·¤â¤³¤Î TryGetComponent ¥á¥½¥Ã¥É¤Î½èÍý·ë²Ì¤¬¼Â¹Ô²Äǽ¤Ê¤é¤Ð¡¢¤Ä¤Þ¤ê¡¢¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤Ë Rigidbody ¥³¥ó¥Ý¡¼¥Í¥ó¥È¤¬¥¢¥¿¥Ã¥Á¤µ¤ì¤Æ¤¤¤ë¤Î¤Ç¤¢¤ì¤Ð¡¢
out ¤È¤·¤ÆÍÑ°Õ¤·¤¿ rigid ÊÑ¿ô¤Ë Rigidbody ¥³¥ó¥Ý¡¼¥Í¥ó¥È¤Î¾ðÊó¤¬ÂåÆþ¤µ¤ì¤Þ¤¹''¡£¤Þ¤¿¡¢true ¤ÎÃͤ¬¡¢¤½¤ì¤È¤ÏÊ̤˽èÍý·ë²Ì¤È¤·¤ÆÌá¤ê¤Þ¤¹¡£
out ¤ËÍÑ°Õ¤·¤¿ÊÑ¿ô¤¬»öÁ°¤ËÀë¸À¤µ¤ì¤Æ¤¤¤ëÊÑ¿ô¤Î¾ì¹ç(Î㤨¤Ð rb ÊÑ¿ô)¤Ë¤Ï¡¢Àë¸À¤µ¤ì¤Æ¤¤¤¿ÊÑ¿ô¤ËÂåÆþ¤µ¤ì¤Þ¤¹¡£
¤³¤ÎÊÕ¤ê¤ÏÊÑ¿ô¤Î¥¹¥³¡¼¥×¤ò¹Í¤¨¤Æ¼ÂÁõ¤ò¹Ô¤¦É¬Íפ¬¤¢¤ê¤Þ¤¹¡£
¡¡TryGetComponent ¥á¥½¥Ã¥É¤Î½èÍý·ë²Ì¤¬ false ¤Î¾ì¹ç¤Ë¤Ï Rigidbody ¥³¥ó¥Ý¡¼¥Í¥ó¥È¤Î¼èÆÀ¤¬¤Ç¤¤Ê¤«¤Ã¤¿¤¿¤á¡¢rigid ÊÑ¿ô¤Ï null ¤Î¤Þ¤Þ¤Ç¡¢false ¤¬½èÍý·ë²Ì¤È¤·¤ÆÌá¤ê¤Þ¤¹''¡£
¡¡¤Ê¤ª TryGetComponent ¥á¥½¥Ã¥É¤Ë¤ÏÊ£¿ô¤Î½ñ¼°¤¬¤¢¤ê¤Þ¤¹¡£¤³¤Á¤é¤Ï²¼µ¤Î¥ê¥Õ¥¡¥ì¥ó¥¹¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£
»²¹Í¥µ¥¤¥È
Unity¸ø¼°¥¹¥¯¥ê¥×¥È¥ê¥Õ¥¡¥ì¥ó¥¹
Component.TryGetComponent
¡¡°Ê²¼¤Î·×»»¼°¤ò»ÈÍѤ¹¤ë¤³¤È¤Ç¡¢Î㤨¤Ð¡¢¥×¥ì¥¤¥ä¡¼¤ÈŨ¤È¤Î¡Öµ÷Î¥¡×¤¬º¹Ê¬¤È¤·¤Æ»»½Ð¤µ¤ì¤Þ¤¹¡£¤³¤Î¤È¤°ì½ï¤Ë¡ÖÊý¸þ¡×¤Î¾ðÊó¤â¼èÆÀ¤Ç¤¤Þ¤¹¡£
¡ã£²ÅÀ´Ö¤Îµ÷Î¥¤ÈÊý¸þ¤Î»»½Ð¡ä
float distination = ¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥ÈA¤Î°ÌÃÖ¾ðÊó - ¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥ÈB ¤Î°ÌÃÖ¾ðÊó;
¡¡¤³¤Î·×»»µ¡Ç½¤ò»ý¤Ä¥á¥½¥Ã¥É¤¬ Vector3.Distance ¥á¥½¥Ã¥É¤Ç¤¹¡£
¡¡Â裱°ú¿ô¤ÈÂ裲°ú¿ô¤Ë»ØÄꤷ¤¿Vector3·¿¤Î£²ÅÀ´Ö¤Îµ÷Î¥¤ò¡¢float·¿¤ËÊÑ´¹¤·¤Æµ÷Î¥¤È¤·¤ÆÌᤷ¤Æ¤¯¤ì¤ë¥á¥½¥Ã¥É¤Ë¤Ê¤ê¤Þ¤¹¡£
Ìá¤êÃͤ˹ç¤ï¤»¤Æ¡¢º¸ÊÕ¤Ëfloat·¿¤ÎÊÑ¿ô¤òÍÑ°Õ¤·¤ÆÂåÆþ¤µ¤»¤ë¤³¤È¤â¤Ç¤¤Þ¤¹¤·¡¢Èæ³Ó½èÍý¤Î·ë²Ì¤È¤·¤ÆÍøÍѤ¹¤ë¤³¤È¤â½ÐÍè¤Þ¤¹¡£
¡¡// ÌÜŪÃϤ˶á¤Å¤¤¤¿¤é if (Vector3.Distance(transform.position, destination) <= 0.15f) { ¡¡¡¡// Ää»ß¤µ¤»¤ë agent.ResetPath(); }
¡¡º£²ó¤Î¼ÂÁõÎã¤Ç¤Ï¡¢¥¥ã¥é¥¯¥¿¡¼¤Î°ÌÃÖ¤ÈÌÜɸÃÏÅÀ¤È¤òÈæ³Ó¤·¡¢¤½¤ÎÌá¤êÃͤÎÃͤ¬ 0.15f °Ê²¼¤Ë¤Ê¤Ã¤¿ºÝ¤Ë¤Ï
¤Û¤ÜÌÜɸÃÏÅÀ¤ËÅþÃ夷¤Æ¤¤¤ë¤â¤Î¤ÈȽÃǤ·¡¢¤½¤Î¥¿¥¤¥ß¥ó¥°¤Ç if ʸÆâ¤Î½èÍý¤¬¼Â¹Ô¤µ¤ì¤Æ NavMeshAgent ¤¬Ää»ß¤¹¤ëÌ¿Î᤬¼Â¹Ô¤µ¤ì¤ë¥í¥¸¥Ã¥¯¤È¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£
¡¡
»²¹Í¥µ¥¤¥È
Unity¸ø¼°¥¹¥¯¥ê¥×¥È¥ê¥Õ¥¡¥ì¥ó¥¹
Vector3.Distance
¡¡NavMeshAgent ¥¯¥é¥¹¤Ë¤Ï¿¤¯¤ÎÊÑ¿ô¤È¥á¥½¥Ã¥É¤¬ÍÑ°Õ¤µ¤ì¤Æ¤¤¤Þ¤¹¡£
¤³¤Îµ¡Ç½¤ò¾å¼ê¤¯³èÍѤ¹¤ë¤³¤È¤Ë¤è¤ê¡¢AI ¤Ë¤è¤ë NavMeshAgent ¤Î¥ë¡¼¥È¤Î¼«Æ°°ÜÆ°¤ò¼ÂÁõ¤¹¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£
¡¡NavMeshAgent ·¿¤ò¥¹¥¯¥ê¥×¥ÈÆâ¤ÇÀë¸À¤·¡¢³ÆÊÑ¿ô¤ä¥á¥½¥Ã¥É¤òÍøÍѤ¹¤ë¤¿¤á¤Ë¤Ï using UnityEngine.AI; ¤ÎÀë¸À¤¬É¬ÍפǤ¹¡£
¡¡º£²ó¤Ï¼ÂÁõ¤ËÍøÍѤ·¤¿µ¡Ç½¤Î¤ß¤òÈ´¿è¤·¤Æ·ÇºÜ¤·¤Æ¤¤¤Þ¤¹¡£
¤¹¤Ù¤Æ¤Îµ¡Ç½¤Ï¾Ò²ð¤Ç¤¤Þ¤»¤ó¤Î¤Ç¡¢¼«Ê¬¤ÇÄ´¤Ù¤Æ¤ß¤Þ¤·¤ç¤¦¡£
¡¡NavMeshAgent ÌÜɸÃÏÅÀ¤òÀßÄꤹ¤ë¤³¤È¤¬¤Ç¤¤ë Vector3 ·¿¤ÎÊÑ¿ô¤Ç¤¹¡£
¤³¤Î¾ðÊó¤ò¥»¥Ã¥È¤¹¤ë¤³¤È¤Ç¡¢NavMeshAgent ¤ËÌÜŪÃϤذÜÆ°¤¹¤ë¤³¤È¤òÅÁ¤¨¡¢°ÜÆ°¤ò³«»Ï¤µ¤»¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£
¡¡ÌÜɸÃÏÅÀ¤ÎÀßÄêÊýË¡¤Ë¤Ï¤â¤¦£±¤Ä¡¢SetDestination ¥á¥½¥Ã¥É¤âÍÑ°Õ¤µ¤ì¤Æ¤ª¤ê¡¢¤½¤Á¤é¤Ç¤âƱ¤¸¤è¤¦¤ËÌÜŪÃϤÎÀßÄ꤬²Äǽ¤Ç¤¹¡£
¡¡SetDestination ¥á¥½¥Ã¥É¤Ë¤Ï bool ·¿¤ÎÌá¤êÃͤ¬¤¢¤ê¡¢Àµ¾ï¤ËÌÜŪÃϤÎÀßÄ꤬Í׵ᤵ¤ì¤Æ¤¤¤ë¤«¤É¤¦¤«¤òɾ²Á¤¹¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£
ÌÜŪÃϤ¬Àµ¾ï¤ËÍ׵ᤵ¤ì¤Æ¤¤¤ì¤Ð true¡¢Í×µá¤Ë¼ºÇÔ¤·¤¿¾ì¹ç¤Ë¤Ï false ¤¬Ìá¤ê¤Þ¤¹¡£
¡¡ÍÑÅӤ˱þ¤¸¤Æ»È¤¤¤ï¤±¤ë¤è¤¦¤Ë¤·¤Þ¤·¤ç¤¦¡£
¡¡// ÌÜŪÃϤι¹¿· //agent.SetDestination(nextPos); // ¤É¤Á¤é¤Î½èÍý¤ÇÀßÄê¤ò¤·¤Æ¤âÌäÂê¤Ê¤· ¡¡agent.destination = nextPos;
¡ã»²¹Í¥µ¥¤¥È¡ä
Unity ¸ø¼°¥¹¥¯¥ê¥×¥È¥ê¥Õ¥¡¥ì¥ó¥¹
NavMeshAgent.destination
https://docs.unity3d.com/jp/current/ScriptReferenc...
Unity ¸ø¼°¥¹¥¯¥ê¥×¥È¥ê¥Õ¥¡¥ì¥ó¥¹
NavMeshAgent.SetDestination
https://docs.unity3d.com/jp/current/ScriptReferenc...
Unity ¸ø¼°¥Þ¥Ë¥å¥¢¥ë
NavMeshAgent ¤ËÌÜŪÃϤذÜÆ°¤¹¤ë¤³¤È¤òÅÁ¤¨¤ë
https://docs.unity3d.com/ja/current/Manual/nav-Mov...
¡¡NavMeshAgent ¤Ë¤è¤ë¥ë¡¼¥È°ÜÆ°»þ¤ÎºÇÂç®ÅÙ¤ÎÀßÄêÃͤǤ¹¡£0 ¤Ë¤¹¤ë¤³¤È¤Ç°ÜÆ°¤ÏÄä»ß¤·¤Þ¤¹¡£
NavMeshAgent ¥³¥ó¥Ý¡¼¥Í¥ó¥È¤ò¥¢¥¿¥Ã¥Á¤·¤¿ºÝ¤Î½é´üÃÍ¤Ï 3.5 ¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¤Î¤Ç¡¢¥²¡¼¥à¤ÎÆâÍƤ˱þ¤¸¤ÆÀßÄê¤ò¹Ô¤¤¤Þ¤¹¡£
º£²ó¤Î¼ÂÁõÎã¤Î¤è¤¦¤Ë¡¢¥¹¥¯¥ê¥×¥È¤«¤éÀ©¸æ¤â²Äǽ¤Ç¤¹¡£
¡¡// °Üư®ÅÙ¤ÎÀßÄê agent.speed = 3.0f;
¡ã»²¹Í¥µ¥¤¥È¡ä
Unity ¸ø¼°¥¹¥¯¥ê¥×¥È¥ê¥Õ¥¡¥ì¥ó¥¹
NavMeshAgent.speed
https://docs.unity3d.com/jp/current/ScriptReferenc...
¡¡NavMeshAgent ¤Î¸½ºß¤Î·ÐÏ©¤òºï½ü¤·¤Þ¤¹¡£
¤½¤Î¤¿¤á¡¢SetDestination ¥á¥½¥Ã¥É¤Ê¤É¤Ë¤è¤Ã¤ÆºÆÅÙÌÜɸÃÏÅÀ¤òÀßÄꤷ¤Ê¤¤¸Â¤ê¡¢Æ°ºî¤·¤Ê¤¯¤Ê¤ê¤Þ¤¹¡£
¡ã»²¹Í¥µ¥¤¥È¡ä
Unity ¸ø¼°¥¹¥¯¥ê¥×¥È¥ê¥Õ¥¡¥ì¥ó¥¹
NavMeshAgent.ResetPath
https://docs.unity3d.com/jp/current/ScriptReferenc...
¡¡¥Ò¥¨¥é¥ë¥¡¼¤Ë¤¢¤ë GamblerCat ¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤òÁªÂò¤·¡¢PlayerNavigationController ¥¹¥¯¥ê¥×¥È¤ò
¥É¥é¥Ã¥°¥¢¥ó¥É¥É¥í¥Ã¥×¤·¤Æ¥¢¥¿¥Ã¥Á¤·¤Æ¤¯¤À¤µ¤¤¡£
¡¡¥¹¥¯¥ê¥×¥È¤ò¥¢¥¿¥Ã¥Á¤·¤¿¤é¡¢É¬¤º¥¤¥ó¥¹¥Ú¥¯¥¿¡¼¤ò³Îǧ¤·¤Æ¡¢¥¢¥¿¥Ã¥Á¤µ¤ì¤Æ¤¤¤ë¤³¤È¤ò³Îǧ¤·¤Æ¤¯¤À¤µ¤¤¡£
¡¡PlayerNavigationController ¥¹¥¯¥ê¥×¥È¤Ëµ½Ò¤·¤Æ¤¤¤ë RequireComponent °À¤Ë¤è¤ê¡¢
¼«Æ°Åª¤Ë NavMeshAgent ¥³¥ó¥Ý¡¼¥Í¥ó¥È¤¬Äɲ䵤ì¤Æ¤¤¤Þ¤¹¡£
¥¤¥ó¥¹¥Ú¥¯¥¿¡¼²èÁü

¡¡Äɲä·¤¿¥¹¥¯¥ê¥×¥È¤È¥³¥ó¥Ý¡¼¥Í¥ó¥È¤Î³Îǧ¤ÈÀßÄê¤ò¹Ô¤¤¤Þ¤¹¡£
¡¡PlayerNavigationController ¥¹¥¯¥ê¥×¥È¤Ë¤Ä¤¤¤Æ¤Ï¡¢°Üư®ÅÙ¤ÎÀßÄ꤬¹Ô¤¨¤Þ¤¹¤Î¤Ç¡¢Ç¤°Õ¤ÎÃͤòÀßÄꤷ¤Æ¤¯¤À¤µ¤¤¡£
°Üư®Å٤ˤĤ¤¤Æ¤Ï¡¢¥¹¥Æ¡¼¥¸¤Î¹¤µ¤Ê¤É¤Ë¤â¤è¤ê¤Þ¤¹¤Î¤Ç¡¢Å¬µ¹Ä´À°¤ò¹Ô¤¦¤È¤è¤¤¤Ç¤·¤ç¤¦¡£
¥¤¥ó¥¹¥Ú¥¯¥¿¡¼²èÁü

¡¡Â³¤¤¤Æ¡¢NavMeshAgent ¤ÎÀßÄê¤ò¹Ô¤¤¤Þ¤¹¡£
¡¡Speed ¤ÎÃͤˤĤ¤¤Æ¤Ï¥¹¥¯¥ê¥×¥È¤Ë¤è¤Ã¤ÆÀ©¸æ¤ò¹Ô¤¦¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¤Î¤Ç¡¢ÀßÄêÉÔÍפǤ¹¡£
½é´üÃͤΤޤޤǤâ¤è¤¤¤Ç¤¹¤·¡¢0 ¤ËÌᤷ¤Æ¤ª¤¤¤Æ¤â¹½¤¤¤Þ¤»¤ó¡£
¡¡¤½¤ì°Ê³°¤Î¹àÌܤˤĤ¤¤Æ¤Ï¡¢²¼µ¤Î²èÁü¤ò»²¹Í¤ËÀßÄꤷ¤Æ¤¯¤À¤µ¤¤¡£
¥¤¥ó¥¹¥Ú¥¯¥¿¡¼²èÁü

¡¡°Ê¾å¤ÇÀßÄê¤Ï´°Î»¤Ç¤¹¡£
¡¡¥¹¥¯¥ê¥×¥È¤ÎÀ©¸æ¤Ë¤Ä¤¤¤Æ¡¢Íý²ò¤ò¿¼¤á¤Æ¤«¤é¥²¡¼¥à¤ò¼Â¹Ô¤·¤Þ¤¹¡£
¤É¤Î¤è¤¦¤ËÆ°ºî¤¹¤ì¤ÐÀµ¤·¤¤µóÆ°¤Ç¤¢¤ë¤Î¤«¡¢¤½¤ì¤ò¼«Ê¬¤ÇȽÃǤǤ¤ë¾õÂ֤ˤʤäƤ«¤é¡¢¥Ç¥Ð¥Ã¥°¤ò¹Ô¤¦¤è¤¦¤Ë¤·¤Æ¤¯¤À¤µ¤¤¡£
¡¡¥¹¥Æ¡¼¥¸¤Î¥Õ¥í¥¢Éôʬ¤Î¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤ò¥Þ¥¦¥¹¤Îº¸¥¯¥ê¥Ã¥¯¤·¤¿¤È¤¡¢¤½¤ÎÃÏÅÀ¤ò°ÜÆ°ÌÜɸ¤È¤·¤Æ
GamblerCat ¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤¬°ÜÆ°¤ò³«»Ï¤·¡¢¤½¤ÎÃÏÅÀ¤ËÃ夤¤¿¤é°ÜÆ°¤ò½ªÎ»¤·¤ÆÄä»ß¤¹¤ì¤Ð¡¢À©¸æÀ®¸ù¤Ç¤¹¡£
¡¡°ÜÆ°Ãæ¤Ç¤¢¤Ã¤Æ¤â¡¢ÊÌ¤Î¥Õ¥í¥¢¤Î¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤¬¥¯¥ê¥Ã¥¯¤µ¤ì¤¿¾ì¹ç¤Ë¤Ï¡¢
¤½¤Á¤é¤ò°ÜÆ°ÌÜɸ¤È¤·¤ÆÊѹ¹¤¹¤ì¤ÐÀ©¸æÀ®¸ù¤Ç¤¹¡£
¡¡¤Þ¤¿¥Õ¥í¥¢¤Î¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È°Ê³°¤Î¾ì½ê¤ò¥¯¥ê¥Ã¥¯¤·¤¿¤È¤¤Ë¤Ï¡¢¤½¤ÎÃÏÅÀ¤Ë¤Ï°ÜÆ°¤·¤Ê¤¤¤è¤¦¤ËÀ©¸æ¤µ¤ì¤Æ¤¤¤ì¤Ð
¤½¤ì¤âÀ©¸æÀ®¸ù¤Ç¤¹¡£¤³¤ÎÀ©¸æ¤¬¹Ô¤¨¤Æ¤¤¤Ê¤¤¤È¡¢¥¹¥Æ¡¼¥¸¤Î³°¤Ë¤â°ÜÆ°¤¹¤ë¤è¤¦¤Ë¤Ê¤Ã¤Æ¤·¤Þ¤¤¡¢¥²¡¼¥à¤¬À®Î©¤·¤Ê¤¯¤Ê¤ê¤Þ¤¹¡£
¡¡Unity ¤Î¶µ²Ê½ñ¤Î¥¢¥Ã¥×¥ë¥¥ã¥Ã¥Á¤Ç¤Î¥Ð¥¹¥±¥Ã¥È¤Î°ÜÆ°À©¸Â¤ò»×¤¤½Ð¤·¤Æ¤ß¤Æ¤¯¤À¤µ¤¤¡£
¡ã¼ÂÁõÆ°²è¡ä
Æ°²è¥Õ¥¡¥¤¥ë¤Ø¤Î¥ê¥ó¥¯
¡¡¤¤¤Þ¤Ï¤Þ¤À¥¢¥Ë¥á¡¼¥·¥ç¥ó¤ÎÀßÄê¤ò¤ª¤³¤Ê¤Ã¤Æ¤¤¤Ê¤¤¤Î¤Ç¡¢¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤¬°ÜÆ°¤À¤±¤¹¤ì¤ÐÌäÂꤢ¤ê¤Þ¤»¤ó¡£
¡¡°Ê¾å¤Ç¤³¤Î¼ê½ç¤Ï½ªÎ»¤Ç¤¹¡£
¡¡=>¡¡¼¡¤Ï¡¡¼ê½ç£¸¡¡¡Ý¥¥ã¥é¥¯¥¿¡¼¤Î¥¢¥Ë¥á¡¼¥·¥ç¥óÁ«°ÜÀßÄê¡Ý¡¡¤Ç¤¹¡£
- ¥«¥Æ¥´¥ê¡§
- ¿Ê³Ø/¥¹¥¯¡¼¥ë
- ¥×¥í¥°¥é¥ß¥ó¥°
¥³¥á¥ó¥È¤ò¤«¤¯