Unity¤Ë´ØÏ¢¤¹¤ëµ­»ö¤Ç¤¹

¡¡¥­¥ã¥é¤Î°ÜÆ°¤ÎºÝ¡¢Á°²ó¤Î¼ê½ç¤ÇºîÀ®¤·¤¿¥¢¥Ë¥á¡¼¥·¥ç¥ó¤Îµ¡Ç½¤òÍøÍѤ·¡¢°ÜÆ°¤·¤Æ¤¤¤ëÊý¸þ¤È¥­¥ã¥é¤Î¥¢¥Ë¥á¤Î°ÜÆ°Êý¸þ¤òƱ´ü¤µ¤»¤ëµ¡Ç½¤òÄɲä·¤Þ¤¹¡£


¼Â¹ÔÆ°²è
Æ°²è¥Õ¥¡¥¤¥ë¤Ø¤Î¥ê¥ó¥¯

¡¡°Ê²¼¤ÎÆâÍƤǽçÈ֤˼ÂÁõ¤ò¿Ê¤á¤Æ¤¤¤­¤Þ¤¹¡£



¼ê½ç£±£±¡¡¡¼Ì£Êý¥­¥ã¥é¤Î°ÜÆ°°ÜÆ°¤È°ÜÆ°¥¢¥Ë¥á¤ÎƱ´ü½èÍý¤Î¼ÂÁõ¡Ý
£±£¶¡¥CharaController ¥¹¥¯¥ê¥×¥È¤òºîÀ®¤·¡¢Ì£Êý¥­¥ã¥é¤Î°ÜÆ°¥¢¥Ë¥áÀ©¸æ½èÍý¤ò¼ÂÁõ¤¹¤ë
£±£·¡¥MoveToClickTileMapPoint ¥¹¥¯¥ê¥×¥È¤ò½¤Àµ¤·¡¢Ì£Êý¥­¥ã¥é¤Î°ÜÆ°¤ÎÊý¸þ¤È°ÜÆ°¥¢¥Ë¥á¤òƱ´ü¤µ¤»¤ë



¡¡¿·¤·¤¤³Ø½¬ÆâÍƤϡ¢°Ê²¼¤ÎÄ̤ê¤Ç¤¹¡£

¡¡¡¦TryGetComponent()¥á¥½¥Ã¥É¤Èout¥­¡¼¥ï¡¼¥ÉÀë¸À
¡¡¡¦Vector2.Distance ¥á¥½¥Ã¥É
¡¡¡¦Animator.SetFloat ¥á¥½¥Ã¥É
¡¡¡¦Vector2.normalized/Vector3.normalized ÊÑ¿ô¤òÍøÍѤ·¤¿Àµµ¬²½½èÍý
¡¡¡¦¥í¡¼¥«¥ë´Ø¿ô
¡¡¡¦¥³¥ë¡¼¥Á¥ó¤òÊÑ¿ô¤ËÂåÆþ¤·¤Æ¼Â¹Ô¤¹¤ë



£±£¶¡¥CharaController ¥¹¥¯¥ê¥×¥È¤òºîÀ®¤·¡¢Ì£Êý¥­¥ã¥é¤Î°ÜÆ°¥¢¥Ë¥áÀ©¸æ½èÍý¤ò¼ÂÁõ¤¹¤ë

£±¡¥Àß·×


¡¡¥×¥ì¥Õ¥¡¥Ö¤Ë¤Ê¤Ã¤Æ¤¤¤ë Chara ¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤ÎÀ©¸æ¤ò¹Ô¤¦¤¿¤á¤Î¥¹¥¯¥ê¥×¥È¤ÎÀ߷פò¹Ô¤¤¤Þ¤¹¡£

¡¡¤Þ¤º¤ÏºÇ½é¤Ë¡¢¥¢¥Ë¥á¡¼¥·¥ç¥ó¤ÎÀ©¸æ¤ò¹Ô¤¨¤ë¤è¤¦¤Ë¤·¤¿¤¤¤Î¤Ç¡¢¤É¤¦¤¤¤Ã¤¿¾ðÊ󤬤¢¤ì¤Ð¤¤¤¤¤Î¤«¤ò¸¡Æ¤¤·¤Æ¤¤¤­¤Þ¤¹¡£

¡¡É¬Íפʥ³¥ó¥Ý¡¼¥Í¥ó¥È¡¢¥á¥½¥Ã¥ÉÆâ¤Î½èÍý¤Ê¤É¡¢¥¢¥Ë¥á¡¼¥·¥ç¥ó¤òÀ©¸æ¤¹¤ë¤¿¤á¤Ë¤Ï¤É¤¦¤¤¤Ã¤¿ÆâÍƤ¬É¬ÍפˤʤäƤ¯¤ë¤Î¤«¡¢
º£¤Þ¤Ç³Ø½¬¤·¤¿ÆâÍƤò¸µ¤Ë¹Í¤¨¤Æ¤ß¤Æ¤¯¤À¤µ¤¤¡£

¡¡Î㤨¤Ð¡¢¥¢¥Ë¥á¡¼¥·¥ç¥ó¤ÎÀ©¸æ¤Ï Animator ¥³¥ó¥Ý¡¼¥Í¥ó¥È¤Ë¤è¤Ã¤ÆÀ©¸æ¤µ¤ì¤Æ¤¤¤Þ¤¹¡£
¤è¤Ã¤Æ¡¢¤³¤Î¾ðÊó¤òÀ©¸æ¤·¤¿¤¤¤Î¤Ç¤¢¤ì¤Ð¡¢Animator ¥³¥ó¥Ý¡¼¥Í¥ó¥È¤Î·¿¤ÇÀë¸À¤·¤¿ÊÑ¿ô¤¬É¬Íפˤʤê¤Þ¤¹¡£


£²¡¥CharaController ¥¹¥¯¥ê¥×¥È¤òºîÀ®¤¹¤ë


¡¡¤É¤¦¤¤¤Ã¤¿¾ðÊó¤¬É¬ÍפǤ¢¤ë¤Î¤«¤ò¼«Ê¬¤Ç¤·¤Ã¤«¤ê¤È¹Í¤¨¤Æ¡¢¤Þ¤º¤Ï½èÍý¤Î¼ÂÁõ¤ËÄ©À路¤Æ¤ß¤Þ¤·¤ç¤¦¡£
¤Þ¤¿¡¢¤³¤Î¶µºà¤ÎÆâÍƤòµ­½Ò¤¹¤ë¾ì¹ç¤Ë¤Ï¡¢°Õ¼±¤·¤Ê¤¬¤é½èÍý¤òµ­½Ò¤·¤Æ¤¯¤À¤µ¤¤¡£

¡¡¥³¥ë¡¼¥Á¥ó¥á¥½¥Ã¥É¤È while ʸ¤òÁȤ߹礻¤¿¥í¥¸¥Ã¥¯¤Ç½èÍý¤¬¹½À®¤µ¤ì¤Æ¤¤¤Þ¤¹¤Î¤Ç¡¢
¤É¤Î¤è¤¦¤Ë½èÍý¤¬Æ°¤¤¤Æ¤¤¤ë¤Î¤«¤ò¹Í¤¨¤Æ¤ß¤Æ¤¯¤À¤µ¤¤¡£


CharaController.cs

<= ¥¯¥ê¥Ã¥¯¤¹¤ë¤È³«¤­¤Þ¤¹



£³¡¥¡ãTryGetComponent()¥á¥½¥Ã¥É¤Èout¥­¡¼¥ï¡¼¥ÉÀë¸À¡ä


¡¡Unity2019.2°Ê¹ß¤ËÄɲ䵤줿¥á¥½¥Ã¥É¤Ç¤¹¡£½èÍý·ë²Ì¤È¤·¤Æ bool ·¿¤ÇÌá¤êÃͤòÊÖ¤·¤Æ¤¯¤ì¤Þ¤¹¡£
¤³¤Î¤È¤­¤Î½èÍý·ë²Ì¤È¤¤¤¦¤Î¤Ï¡¢»ØÄꤷ¤¿¥³¥ó¥Ý¡¼¥Í¥ó¥È¤Î·¿¤Î¼èÆÀ¤ò¹Ô¤¤¡¢¤½¤ì¤¬¼èÆÀ¤Ç¤­¤ì¤Ð true¡¢¼èÆÀ¤Ç¤­¤Ê¤±¤ì¤Ð false ¤¬Ìá¤ê¤Þ¤¹¡£

¡¡¤Þ¤¿out¥­¡¼¥ï¡¼¥É¤Ë¤è¤ëÀë¸À¤¬¤¢¤ê¤Þ¤¹¤Î¤Ç¡¢true¤Î¾ì¹ç¤Ë¤Ïɬ¤º¡¢¤³¤Îout¤Î¸å¤ËÀë¸À¤·¤¿ÊÑ¿ôÆâ¤Ë·¿¤¬ÂåÆþ¤µ¤ì¤Þ¤¹¡£
¡¡out¥­¡¼¥ï¡¼¥ÉÀë¸À¤ò¹Ô¤¦¤È¡¢out¤òÉÕ¤±¤¿°ú¿ô¤Ç»ØÄꤷ¤¿ÊÑ¿ô¤Ï¥á¥½¥Ã¥ÉÆâ¤Çɬ¤º·ë²Ì¤¬Æþ¤ë¤³¤È¤¬Êݾڤµ¤ì¤ë¤â¤Î¤Ç¤¹¡£

¡¡if (!TryGetComponent(out tilemapMove)) {
  ¡¡¡¡Debug.Log("MoveToClickTileMapPoint ¤ò¼èÆÀ½ÐÍè¤Þ¤»¤ó¤Ç¤·¤¿¡£");
  }

¡¡º£²ó¤Ï¤³¤Î¤è¤¦¤Ê½èÍý¤È¤·¤ÆÍøÍѤ·¤Æ¤¤¤Þ¤¹¡£
¥¹¥¯¥ê¥×¥È¤¬¥¢¥¿¥Ã¥Á¤µ¤ì¤Æ¤¤¤ë¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È(¤Ä¤Þ¤ê Chara ¤Ç¤¹¡Ë¤Ø¤È¥¢¥¯¥»¥¹¤·¡¢¤½¤Î gameObject ¤ËÂФ·¤Æ TryGetComponent ¥á¥½¥Ã¥É¤ò¼Â¹Ô¤·¤Æ¤¤¤Þ¤¹¡£

¡¡out ¥­¡¼¥ï¡¼¥É¤Î¸å¤Ë¤Ï tilemapMove ¤È¤¤¤¦ÊÑ¿ô¤òÍÑ°Õ¤·¤Æ¤ª¤­¤Þ¤¹¡£

¡¡¤â¤·¤â¤³¤Î TryGetComponent ¤Î·ë²Ì¤¬ true ¤Ç¤¢¤ë¤Ê¤é¤Ð¡¢out ¤È¤·¤ÆÍÑ°Õ¤·¤¿ tilemapMove ÊÑ¿ô¤Ë MoveToClickTileMapPoint ¥³¥ó¥Ý¡¼¥Í¥ó¥È¤Î¾ðÊó¤¬ÂåÆþ¤µ¤ì¤Þ¤¹¡£

¡¡TryGetComponent ¥á¥½¥Ã¥É¤Î·ë²Ì¤¬ false ¤Î¾ì¹ç¤Ë¤Ï MoveToClickTileMapPoint ¥³¥ó¥Ý¡¼¥Í¥ó¥È¤Î¼èÆÀ¤¬¤Ç¤­¤Ê¤«¤Ã¤¿¤¿¤á false ¤¬·ë²Ì¤È¤·¤ÆÌá¤ê¡¢ÊÑ¿ôÆâ¤Ë¤ÏÃͤ¬ÂåÆþ¤µ¤ì¤Ê¤¤¤Þ¤Þ½ªÎ»¤·¤Þ¤¹¡£
¤Þ¤¿¡¢false ¤Î¾ì¹ç¤Ë¤Ï if ʸ¤Î¾ò·ï¤¬À®Î©¤¹¤ë¤¿¤á¡¢Console ¥Ó¥å¡¼¤Ë¼èÆÀ¤Ë¼ºÇÔ¤·¤Æ¤¤¤ë¥á¥Ã¥»¡¼¥¸¤òɽ¼¨¤·¤Æ¤¤¤Þ¤¹¡£

¡¡¤Ê¤ªTryGetComponent¥á¥½¥Ã¥É¤Ë¤ÏÊ£¿ô¤Î½ñ¼°¤¬¤¢¤ê¤Þ¤¹¡£¤³¤Á¤é¤Ï²¼µ­¤Î¥ê¥Õ¥¡¥ì¥ó¥¹¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£


»²¹Í¥µ¥¤¥È
Unity¸ø¼°¥¹¥¯¥ê¥×¥È¥ê¥Õ¥¡¥ì¥ó¥¹
Component.TryGetComponent
https://docs.unity3d.com/ScriptReference/Component...


£´¡¥¡ãVector2.Distance()¥á¥½¥Ã¥É¡ä


¡¡Â裱°ú¿ô¤ÈÂ裲°ú¿ô¤Ë»ØÄꤷ¤¿Vector2·¿¤Î£²ÅÀ´Ö¤Îµ÷Î¥¤ò¡¢float·¿¤ËÊÑ´¹¤·¤Æµ÷Î¥¤È¤·¤ÆÌᤷ¤Æ¤¯¤ì¤ë¥á¥½¥Ã¥É¤Ç¤¹¡£
Ìá¤êÃͤ˹ç¤ï¤»¤ÆÊդˤÏfloat·¿¤ÎÊÑ¿ô¤òÍÑ°Õ¤·¤ÆÂåÆþ¤µ¤»¤Þ¤¹¡£

¡¡if (Vector2.Distance(transform.position, corners[currentCornerIndex]) <= 0.3f) {
¡¡
Unity¸ø¼°¥¹¥¯¥ê¥×¥È¥ê¥Õ¥¡¥ì¥ó¥¹
Vector2.Distance
https://docs.unity3d.com/ja/current/ScriptReferenc...


£µ¡¥¡ãVector2.normalized/Vector3.normalized ÊÑ¿ô¤òÍøÍѤ·¤¿Àµµ¬²½½èÍý¡ä

¡¡
¡¡Àµµ¬²½½èÍý¤Ç¤¹¡£magnitude(¥Þ¥°¥Ë¥Á¥å¡¼¥É¡£Ä¹¤µ)¤ò£±¤È¤·¤¿¥Ù¥¯¥È¥ë(ñ°Ì¥Ù¥¯¥È¥ë)¤òÊÖ¤·¤Þ¤¹¡£Ìá¤êÃÍ¤Ï Vector2/Vector3 ·¿¤Ë¤Ê¤ê¤Þ¤¹¡£

¡¡Vector2 direction = (corners[currentCornerIndex] - transform.position).normalized;

¡¡¸½ºß¤Î¥Ù¥¯¥È¥ë¤ÎÊý¸þ¤ò°Ý»ý¤·¤¿¤Þ¤Þ¡¢magnitude¤¬£±¡¢¤¢¤ë¤¤¤Ï£°¤Îñ°Ì¥Ù¥¯¥È¥ë¤òºîÀ®¤¹¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£¡Ê¥Ù¥¯¥È¥ë¤ÎÃͤ¬¾®¤µ¤¤¤È£°¤Ë¤Ê¤ê¤Þ¤¹¡£¡Ë

¡¡¤³¤ÎÀµµ¬²½¤ò¹Ô¤¦¤³¤È¤Ë¤è¤Ã¤Æ°ÌÃ֤αó¶á¤Ë´Ø¤ï¤é¤º¡¢magnitude ¤¬¤¹¤Ù¤Æ 1¡¢¤¢¤ë¤¤¤Ï 0 ¤ËÅý°ì¤µ¤ì¤¿Ã±°Ì¥Ù¥¯¥È¥ë¤ÎÃͤȤʤ뤿¤á¡¢
º¸¤È²¼¤ÎÊý¸þ¤Ç¤¢¤ì¤Ð -1¡¢±¦¤È¾å¤ÎÊý¸þ¤Ç¤¢¤ì¤Ð 1¤ÎÃͤ¬¥Ù¥¯¥È¥ë¤È¤·¤ÆºîÀ®¤µ¤ì¤Þ¤¹¡£Ãͤ¬ 0 ¤Ë¶á¤¤¾ì¹ç¤Ë¤Ï 0 ¤¬¥Ù¥¯¥È¥ë¤È¤·¤ÆºîÀ®¤µ¤ì¤Þ¤¹¡£

¡¡¥­¡¼ÆþÎϤ¬¼Ð¤áÊý¸þ¤Ë¤Ê¤ë¤È¡¢½Ä²£Ä¾Àþ¤è¤ê¤âŤ¤µ÷Î¥¤¬À¸¤Þ¤ì¤Þ¤¹¡£¤½¤ÎÃͤò¤½¤Î¤Þ¤ÞÍøÍѤ·¤Æ¤·¤Þ¤¦¤È¡¢¼Ð¤á°ÜÆ°¤ÎÊý¤¬°Üư®ÅÙ¤¬Â®¤¯¤Ê¤Ã¤Æ¤·¤Þ¤¤¤Þ¤¹¡£
¤½¤³¤ÇÀµµ¬²½½èÍý¤ò¹Ô¤¤Ã±°Ì¥Ù¥¯¥È¥ë¤òºî¤ë¤³¤È¤Ç¡¢Êý¸þ¤Î¾ðÊó¤Ï¤½¤Î¤Þ¤Þ¤Ç¡¢ÃͤÀ¤±¤ò 0 ¤« 1 ¤« -1 ¤Ëºî¤êľ¤·¤Æ¤¤¤Þ¤¹¡£
¤³¤ÎÃͤò°ÜÆ°¤ÎÆþÎÏÃͤȤ·¤ÆÍøÍѤ¹¤ë¤³¤È¤Ë¤è¤ê¡¢°ÜÆ°Êý¸þ¤Î¾ðÊó¤Ï¤½¤Î¤Þ¤Þ¤Ç¡¢°ÜÆ°¤¹¤ë®ÅÙ¤òÊäÀµ¤¹¤ë¤³¤È¤¬½ÐÍè¤Æ¤¤¤Þ¤¹¡£

Unity¸ø¼°¥¹¥¯¥ê¥×¥È¡¦¥ê¥Õ¥¡¥ì¥ó¥¹
https://docs.unity3d.com/ja/current/ScriptReferenc...
TechProjinÍÍ
Unity¤ÎVector3¤Ç¤è¤¯»È¤¦¤â¤Î¤Þ¤È¤á
https://tech.pjin.jp/blog/2016/02/16/unity_vector3...


£¶¡¥¡ãAnimator.SetFloat ¥á¥½¥Ã¥É¡ä


¡¡Unity¤Î¥¢¥Ë¥á¡¼¥·¥ç¥ó¤Ï¡¢Animator¥¯¥é¥¹¤Ë¤è¤Ã¤ÆÍÍ¡¹¤Ê¥¢¥Ë¥á¡¼¥·¥ç¥ó¤ÎÀ©¸æ¤¬¹Ô¤¨¤Þ¤¹¡£
Unity¸ø¼°¥¹¥¯¥ê¥×¥È¥ê¥Õ¥¡¥ì¥ó¥¹
Animator
https://docs.unity3d.com/ja/current/ScriptReferenc...

¡¡º£²ó¤Ï¥¢¥Ë¥á¡¼¥·¥ç¥ó¤ÎÁ«°Ü¤Î¤¿¤á¤Ë¡¢SetFloat ¥á¥½¥Ã¥É¤òÍøÍѤ·¡¢Á«°Ü¤Î¾ò·ï¤ò¤³¤Î¥á¥½¥Ã¥É¤Î°ú¿ô¤Ë»ØÄꤷ¤Æ¥¢¥Ë¥á¡¼¥·¥ç¥ó¤ÎÁ«°Ü¤ò¹Ô¤Ã¤Æ¤¤¤Þ¤¹¡£

¡¡³Æ¥á¥½¥Ã¥É¤Î°ú¿ô¤Ë¤Ï¤½¤ì¤¾¤ì·¿¤Î»ØÄ꤬°Û¤Ê¤ê¤Þ¤¹¤¬¡¢¤¤¤º¤ì¤âÂè1°ú¿ô¤Ï string ·¿¤Ç¤¹¡£¤³¤ÎÉôʬ¤Ë¤Ï¡¢¥Ñ¥é¥á¡¼¥¿¤ÇÀßÄꤷ¤¿Ê¸»úÎó¤ò»ØÄꤷ¤Þ¤¹¡£
ʸ»úÎó¤Ç¤¹¤Î¤ÇÂçʸ»ú¾®Ê¸»ú¤Ï¶èÊ̤µ¤ì¤Þ¤¹¡£¥Ñ¥é¥á¡¼¥¿¤ËÅÐÏ¿¤·¤¿Ê¸»úÎó¤ò¤³¤ÎÂè1°ú¿ô¤Ë»ØÄꤹ¤ë¤³¤È¤Ç¥Ñ¥é¥á¡¼¥¿¤Î¤â¤Ä¾ðÊó¤òÊѹ¹¤¹¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£
¤½¤·¤Æ¡¢¥Ñ¥é¥á¡¼¥¿¤ÎÃͤòÊѹ¹¤¹¤ëÆâÍƤòÂè2°ú¿ô¤Ë»ØÄꤷ¤Þ¤¹¡£

¡¡Î㤨¤Ð¡¢SetFloat¤Ç¤¢¤ì¤Ð¡¢Âè1°ú¿ô¤Ë float ·¿¤Î¥Ñ¥é¥á¡¼¥¿¤Ç¤¢¤ë "Look X" ¤Îʸ»úÎó¤ò»ØÄꤷ¡¢Âè2°ú¿ô¤Ë float ·¿¤ÎÃͤò»ØÄꤷ¤Þ¤¹¡£

¡¡// BlendTree ¤Ë¥¢¥Ë¥á¡¼¥·¥ç¥ó¤ÎÌ¿Îá¤ò¹Ô¤¦
¡¡anim.SetFloat("X", direction.x);
  anim.SetFloat("Y", direction.y);

¡¡¤³¤¦¤¹¤ë¤³¤È¤Ç¡¢¤³¤Î¥Ñ¥é¥á¡¼¥¿¤ÎÃͤò¥¹¥¯¥ê¥×¥È¤«¤é½ñ¤­´¹¤¨¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£¤½¤Î·ë²Ì¤È¤·¤Æ¡¢¾ò·ï¤¬¹çÃפ·¤¿¥¢¥Ë¥á¡¼¥·¥ç¥ó¤ËÁ«°Ü¤¹¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£


¥Ñ¥é¥á¡¼¥¿¤ÈSet¡Á¥á¥½¥Ã¥É¤Î´ØÏ¢À­


»²¹Í¥µ¥¤¥È
Unity¸ø¼°¥¹¥¯¥ê¥×¥È¥ê¥Õ¥¡¥ì¥ó¥¹
SetFloat
https://docs.unity3d.com/ja/current/ScriptReferenc...


£±£·¡¥MoveToClickTileMapPoint ¥¹¥¯¥ê¥×¥È¤ò½¤Àµ¤·¡¢Ì£Êý¥­¥ã¥é¤Î°ÜÆ°¤ÎÊý¸þ¤È°ÜÆ°¥¢¥Ë¥á¤òƱ´ü¤µ¤»¤ë

£±¡¥Àß·×


¡¡Àè¤Û¤É¤Î¼ê½ç¤Ç Chara ¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤Î¥×¥ì¥Õ¥¡¥Ö¤ÎÀ©¸æ¤ò¹Ô¤¦¤¿¤á¤Î¥¹¥¯¥ê¥×¥È¤òºîÀ®¤·¤Þ¤·¤¿¡£
¤½¤ÎÃæ¤Ë¤Ï SetAnime ¥á¥½¥Ã¥É¤¬ÍÑ°Õ¤µ¤ì¤Æ¤ª¤ê¡¢¤³¤Î¥á¥½¥Ã¥É¤ò¼Â¹Ô¤¹¤ë¤³¤È¤Ç¡¢°ú¿ô¤Ë»ØÄꤷ¤¿°ÌÃÖ¤ò½çÈ֤˰ÜÆ°¤¹¤ëºÝ¤Ë
¥­¥ã¥é¤Î°ÜÆ°Êý¸þ¤Ë¹ç¤ï¤»¤Æ¥¢¥Ë¥á¡¼¥·¥ç¥ó¤ÎÀ©¸æ¤ò¹Ô¤¦µ¡Ç½¤¬¼ÂÁõ¤µ¤ì¤Þ¤·¤¿¡£

¡¡¤³¤Î¼ê½ç¤Ç¤Ï¡¢¥­¥ã¥é¤Î°ÜÆ°Àè¤òÀßÄꤹ¤ë MoveToClickTileMapPoint ¥¹¥¯¥ê¥×¥È¤ò½¤Àµ¤·¡¢
¥¿¥Ã¥×¤·¤¿ºÝ¤Î½èÍý¤òÄɲ䷤ơ¢¥¿¥Ã¥×¤Ë¹ç¤ï¤»¤Æ CharaControlller ¥¹¥¯¥ê¥×¥È¤Î SetAnime ¥á¥½¥Ã¥É¤Ë°ÜÆ°ÃÏÅÀ¤Î¾ðÊó¤ò°ú¿ô¤ÇÅϤ¹¤³¤È¤Ç
°ÜÆ°·ÐÏ©¤Î¾ðÊó¤ò¤½¤ÎÅÔÅÙ¡¢CharaControlller ¥¹¥¯¥ê¥×¥È¦¤ËÄ󶡤¹¤ëµ¡Ç½¤òÄɲä·¤Þ¤¹¡£

¡¡¥á¥½¥Ã¥É¤Î°ú¿ô¤ò³èÍѤ¹¤ë¤³¤È¤Ë¤è¤ê¡¢Æ±¤¸ SetAnime ¥á¥½¥Ã¥É¤ò¼Â¹Ô¤·¤Æ¤â¡¢ÅϤµ¤ì¤ë¾ðÊó(°ÜÆ°ÃÏÅÀ)¤¬°Û¤Ê¤ë¤¿¤á¡¢
¥¢¥Ë¥á¤ÎƱ´ü¤â¤½¤Î¾ðÊó¤ò¸µ¤ËÀ©¸æ¤ò¹Ô¤¦¤è¤¦¤Ë¤·¤Æ¤¤¤ë¤Î¤Ç¡¢¼«Æ°Åª¤Ë°ÜÆ°Êý¸þ¤È¥¢¥Ë¥á¤¹¤ë¥­¥ã¥é¤Î¸þ¤­¤¬¾ï¤ËƱ´ü¤¹¤ë¤è¤¦¤ËÀ߷פ·¤Æ¤¤¤Þ¤¹¡£


£²¡¥MoveToClickTileMapPoint ¥¹¥¯¥ê¥×¥È¤ò½¤Àµ¤¹¤ë


¡¡¿·¤·¤¯ºîÀ®¤·¤¿ CharaController ¥¹¥¯¥ê¥×¥È¤òÍøÍѤǤ­¤ë¾õÂ֤ˤ¹¤ë¤¿¤á¡¢ÊÑ¿ô¤ÎÀë¸À¤òÄɲ䷤Ƥ¤¤Þ¤¹¡£
¤Þ¤¿¡¢Start ¥á¥½¥Ã¥ÉÆâ¤È SetPathAndMove ¥á¥½¥Ã¥ÉÆâ¤Ë½èÍý¤òÄɲ䷤Ƥ¤¤Þ¤¹¡£

¡¡¤É¤Î¤è¤¦¤Ê½èÍý¤¬Äɲ䵤ì¤Æ¤¤¤ë¤Î¤«¡¢¤¿¤Àµ­½Ò¤¹¤ë¤À¤±¤Ç¤Ï¤Ê¤¯¤Æ¡¢½èÍý¤ÎÍý²ò¤ò¹Ô¤¤¤Ê¤¬¤é¼ÂÁõ¤ò¹Ô¤Ã¤Æ¤¯¤À¤µ¤¤¡£


MoveToClickTileMapPoint.cs

<= ¥¯¥ê¥Ã¥¯¤¹¤ë¤È³«¤­¤Þ¤¹¡£


¡¡¥¹¥¯¥ê¥×¥È¤òºîÀ®¤·¤¿¤é¥»¡¼¥Ö¤ò¹Ô¤¤¤Þ¤¹¡£¥»¡¼¥Ö¤Ï Ctrl + Shift + S ¥­¡¼¤Ç¤¹¡£


£³¡¥¡ã¥í¡¼¥«¥ë´Ø¿ô¡ä


¡¡C# 7.0 °Ê¹ß¤Ç¤Ï¥á¥½¥Ã¥É¤ÎÆâÉô¤ËÆþ¤ì»Ò¤È¤·¤Æ¥á¥½¥Ã¥É¤òºîÀ®½ÐÍè¤ë¤è¤¦¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£
¥á¥½¥Ã¥ÉÆâÉô¤ËÀë¸À¤¹¤ë¥á¥½¥Ã¥É¤ò¥í¡¼¥«¥ë´Ø¿ô¤È¸Æ¤Ó¤Þ¤¹¡£

¡¡¥á¥½¥Ã¥ÉÆâ¤ÎÆþ¤ì»Ò¤Ç¤¢¤ë´Ø¿ô¤Ç¤¢¤ë¤¿¤á¡¢½¤¾þ»Ò¤ÎÀë¸À¤Ï½ÐÍè¤Þ¤»¤ó(private ¤Î¤ß)¤¬°ú¿ô¤âÌá¤êÃͤâ»ý¤¿¤»¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£
C# 8.0 °Ê¹ß¤Ç¤Ï¡¢Â°À­¤òÉÕÍ¿¤·¤¿¤ê¤¹¤ë¤³¤È¤â½ÐÍè¤Þ¤¹¡£


¡ãÈ´¿è¡ä
¡¡¡¡¡¡¡¡// ·Ðϩɽ¼¨¤ÎÀ¸À®
        StartCoroutine(GenerateCornerLineFromPath(transform.position, nextPos));


¡¡¡¡¡¡¡¡/// <summary>
        /// ·Ðϩɽ¼¨¤ÎÀ¸À®
        /// </summary>
        /// <param name="startPos"></param>
        /// <param name="endPos"></param>
        IEnumerator GenerateCornerLineFromPath(Vector3 startPos, Vector3 endPos) {

            // ¥Ñ¥¹¤ò¼èÆÀ¤¹¤ë¤Þ¤ÇÂÔµ¡
            yield return new WaitUntil(() => agent.hasPath);

            Debug.Log(agent.hasPath);
            Debug.Log(agent.isOnNavMesh);

            NavMeshPath path = new NavMeshPath();


            // ·ÐÏ©¤Î¾ðÊó¤ò¼èÆÀ¤Ç¤­¤Æ¤¤¤ë¤«³Îǧ
            if (NavMesh.CalculatePath(startPos, endPos, NavMesh.AllAreas, path)) {

                // ·ÐÏ©¤ÎºÂɸ¾ðÊó¼èÆÀ
                Vector3[] corners = path.corners;

                // ¤¹¤Ç¤Ë°ÜÆ°Ãæ¤Î¥¢¥Ë¥á¤òºÆÀ¸¤·¤Æ¤¤¤ë¾ì¹ç
                if (coroutine != null) {

                    // ¥¢¥Ë¥áºÆÀ¸¤òÄä»ß
                    StopCoroutine(coroutine);
                    coroutine = null;
                }

                // ¥¢¥Ë¥áºÆÀ¸ÍѤΥ᥽¥Ã¥ÉÅÐÏ¿
                coroutine = charaController.SetAnime(corners);

                // ÅÐÏ¿¤·¤¿¥¢¥Ë¥áºÆÀ¸ÍѤΥ᥽¥Ã¥É¤ò¼Â¹Ô
                StartCoroutine(coroutine);


                // TODO ·ÐÏ©¾ðÊ󤬤¢¤ë¾ì¹ç¡¢·Ðϩɽ¼¨ÍѤΥ²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥ÈºîÀ®


                // TODO ·Ðϩɽ¼¨¤ÎºîÀ®


            }
        }

¡¡¥í¡¼¥«¥ë´Ø¿ô¤ÏÄ̾ï¤Î´Ø¿ô¤ÈƱ¤¸¤è¤¦¤Ë¡¢¼Â¹ÔÌ¿Îá¤ò¹Ô¤¦¤³¤È¤Ç¼Â¹Ô¤µ¤ì¤Þ¤¹¡£
¤¿¤À¤·¡¢ÍøÍѤ¹¤ëÈÏ°Ï(¥¹¥³¡¼¥×)¤¬¡¢¥í¡¼¥«¥ë´Ø¿ô¤¬ÄêµÁ¤µ¤ì¤Æ¤¤¤ë¥á¥½¥Ã¥ÉÆâÉô¤Î¤ß¤Ë¸Â¤é¤ì¤Þ¤¹¡£

¡¡º£²ó¤Î¥±¡¼¥¹¤Ç¤¢¤ì¤Ð¡¢GenerateCornerLineFromPath ¥á¥½¥Ã¥É¤ò SetPathAndMove ¥á¥½¥Ã¥ÉÆâ¤ÇÀë¸À¤·¤Æ¤¤¤Þ¤¹¤Î¤Ç¡¢
GenerateCornerLineFromPath ¥á¥½¥Ã¥É¤ò¸Æ¤Ó½Ð¤¹Ì¿Îá¤Ï¡¢SetPathAndMove ¥á¥½¥Ã¥ÉÆâ¤Ç¤·¤«¼Â¹Ô¤Ç¤­¤Þ¤»¤ó¡£

¡¡ÍøÍÑÊýË¡¤È¤·¤Æ¤Ï¡¢¥á¥½¥Ã¥É¤Î¸Æ¤Ó½Ð¤·Ì¿Î᤬ÆÃÄê¤Î¥á¥½¥Ã¥ÉÆâ¤Ë¤Î¤ß¤Ë¤¢¤ê¡¢¤«¤Ä¡¢Â¾¤Î¥á¥½¥Ã¥É¤«¤é¤â¸Æ¤Ð¤ì¤ë¤³¤È¤Î¤Ê¤¤½èÍý¤ò¥í¡¼¥«¥ë´Ø¿ô¤È¤·¤Æ½àÈ÷¤¹¤ë¤³¤È¤¬°ìÈÌŪ¤Ç¤¹¡£
ÍøÍÑÈϰϤòÀ©¸Â¤·¤Æ¤¤¤ëʬ¡¢½èÍý¤¬Æɤߤ䤹¤¯¤Ê¤ê¤Þ¤¹¤·¡¢¥¨¥é¡¼¤â¸«¤Ä¤±¤ä¤¹¤¯¤Ê¤ê¤Þ¤¹¡£(»È¤¤Æ»¤¬¸Â¤é¤ì¤Æ¤¤¤ë½èÍý¤ò¥á¥½¥Ã¥É²½¤·¡¢¥á¥½¥Ã¥ÉÆâÉô¤ËÊĤ¸¹þ¤á¤Æ¤ª¤¯¤³¤È¤Ç²ÄÆÉÀ­¤¬¾å¤¬¤ê¤Þ¤¹¡£)

MicroSoft
¥í¡¼¥«¥ë´Ø¿ô
https://docs.microsoft.com/ja-jp/dotnet/csharp/pro...
.NET column ÍÍ
C#¤Î¥í¡¼¥«¥ë´Ø¿ô¤È¤Ï¡©»È¤¤Êý¤ä¥á¥ê¥Ã¥È¡¦¥é¥à¥À¼°¤È¤Î°ã¤¤¤â¾Ò²ð
https://www.fenet.jp/dotnet/column/language/3933/


£´¡¥¡ã¥³¥ë¡¼¥Á¥ó¤òÊÑ¿ô¤ËÂåÆþ¤·¤Æ¼Â¹Ô¤¹¤ë¡ä


¡¡°Ê²¼¤Î¥Ú¡¼¥¸¤Ë¾ÜºÙ¤ÊÀâÌÀ¤¬¤¢¤ê¤Þ¤¹¡£

¡¡=>¡¡¥³¥ë¡¼¥Á¥ó¤òÊÑ¿ô¤ËÂåÆþ¤·¤Æ¼Â¹Ô¤¹¤ë

¡¡º£²ó¤Î¥±¡¼¥¹¤Ç¤Ï¡¢Å¨¤¬¥×¥ì¥¤¥ä¡¼¤ò¸«¼º¤Ã¤¿¤ê¡¢Å¨¤Î¹¶·â½èÍý¤ÎÅÓÃæ¤ÇŨ¤¬Åݤµ¤ì¤¿¾ì¹ç¤Ë¡¢¹¶·â¤Î½àÈ÷¤Î½èÍý¤òÄä»ß¤Ç¤­¤ë¤è¤¦¤Ë¤¹¤ë¤¿¤á¤Ë¤³¤Îµ¡Ç½¤ò¼ÂÁõ¤·¤Æ¤¤¤Þ¤¹¡£

¡¡¥³¥ë¡¼¥Á¥ó¥á¥½¥Ã¥É¤ò¼Â¹Ô¤·¤Æ¤¤¤ë¥¹¥¯¥ê¥×¥È¤¬¥¢¥¿¥Ã¥Á¤µ¤ì¤Æ¤¤¤ë¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤¬ÇË´þ¤µ¤ì¤¿¾ì¹ç¡¢
¥³¥ë¡¼¥Á¥ó¥á¥½¥Ã¥É¤Î½èÍý¤â¶¯À©Åª¤ËÄä»ß¤µ¤ì¤Þ¤¹¡£¤½¤Î¤¿¤á¡¢¼ç¤ÊÌÜŪ¤È¤·¤Æ¤Ï¡¢Å¨¤¬¥×¥ì¥¤¥ä¡¼¤ò¸«¼º¤Ã¤¿¾ì¹ç¤Ë¡¢¹¶·â½àÈ÷½èÍý¤òÄä»ß¤µ¤»¤ë¤³¤È¤Ç¤¹¡£

¡¡¥³¥ë¡¼¥Á¥ó¥á¥½¥Ã¥É¤ÏÈóƱ´ü½èÍý¤Ç¤¢¤ë¤¿¤á¡¢¤½¤ì°Ê³°¤Î½èÍý¤¬½ª¤ï¤ë¤Î¤òÂÔ¤¿¤º¤Ë¡¢¥³¥ë¡¼¥Á¥ó¥á¥½¥Ã¥ÉÆâ¤Î½èÍý¤ò¿Ê¤á¤Æ¤¤¤­¤Þ¤¹¡£
ÊØÍø¤Ç¤¢¤ëÈ¿ÌÌ¡¢¥³¥ë¡¼¥Á¥ó¥á¥½¥Ã¥É¤Î½èÍý¤¬ÉÔÍפˤʤ俾ì¹ç¤Ë¤Ï¤·¤Ã¤«¤ê¤ÈÄä»ß¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£


¡ãÊÑ¿ô¤Ë¥³¥ë¡¼¥Á¥ó¥á¥½¥Ã¥É¤òÅÐÏ¿¤·¤Æ¼Â¹Ô¡ä

    private IEnumerator coroutine;   // ¥³¥ë¡¼¥Á¥ó¥á¥½¥Ã¥É¤òÅÐÏ¿¤¹¤ë¤¿¤á¤ÎÊÑ¿ô


    // ¥¢¥Ë¥áºÆÀ¸ÍѤΥ᥽¥Ã¥ÉÅÐÏ¿
    coroutine = charaController.SetAnime(corners);

    // ÅÐÏ¿¤·¤¿¥¢¥Ë¥áºÆÀ¸ÍѤΥ᥽¥Ã¥É¤ò¼Â¹Ô
    StartCoroutine(coroutine);



¡ãÊÑ¿ô¤ËÅÐÏ¿¤µ¤ì¤Æ¤¤¤ë¥³¥ë¡¼¥Á¥ó¥á¥½¥Ã¥É¤òÄä»ß¡ä

    // ¤¹¤Ç¤Ë°ÜÆ°Ãæ¤Î¥¢¥Ë¥á¤òºÆÀ¸¤·¤Æ¤¤¤ë¾ì¹ç
    if (coroutine != null) {

        // ¥¢¥Ë¥áºÆÀ¸¤òÄä»ß
        StopCoroutine(coroutine);
        coroutine = null;
    }

»²¹Í¥µ¥¤¥È
Qiita @riekure ÍÍ
¡ÚUnity¡ÛÈóƱ´ü½èÍý¤òÍý²ò¤¹¤ë¡Á¥³¥ë¡¼¥Á¥óÊÔ¡Á
https://qiita.com/riekure/items/9f59fec68c3e31f38f...


£µ¡¥Chara ¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤Ë CharaController ¥¹¥¯¥ê¥×¥È¤ò¥¢¥¿¥Ã¥Á¤¹¤ë


¡¡Chara ¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤Ë CharaControlller ¥¹¥¯¥ê¥×¥È¤ò¥¢¥¿¥Ã¥Á¤·¤Þ¤¹¡£

¥¤¥ó¥¹¥Ú¥¯¥¿¡¼²èÁü


¡¡°Ê¾å¤Ç¤³¤Î¼ê½ç¤Ï´°Î»¤Ç¤¹¡£


£¶¡¥¥²¡¼¥à¤ò¼Â¹Ô¤·¤ÆÆ°ºî¤ò³Îǧ¤¹¤ë


¡¡½èÍý¤ÎÆâÍƤ¬Ê£»¨¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¤Î¤Ç¡¢¤·¤Ã¤«¤ê¤ÈÆɤ߲ò¤¤¤Æ¤«¤é¤¹¤¹¤á¤ë¤è¤¦¤Ë¤·¤Æ¤¯¤À¤µ¤¤¡£

¡¡¥²¡¼¥à¤ò¼Â¹Ô¤·¡¢¤¤¤Þ¤Þ¤Ç¤ÈƱ¤¸¤è¤¦¤Ë°ÜÆ°¤·¤¿¤¤ÃÏÅÀ¤ò¥¯¥ê¥Ã¥¯¤·¤Æ¤¯¤À¤µ¤¤¡£
¥­¥ã¥é¤Î¥¢¥Ë¥á¤¬°ÜÆ°Êý¸þ¤ÈƱ´ü¤¹¤ë¤è¤¦¤Ë¤Ê¤ì¤ÐÀ©¸æÀ®¸ù¤Ç¤¹¡£


¼Â¹ÔÆ°²è
Æ°²è¥Õ¥¡¥¤¥ë¤Ø¤Î¥ê¥ó¥¯




¡¡°Ê¾å¤Ç¤³¤Î¼ê½ç¤Ï½ªÎ»¤Ç¤¹¡£

¡¡¼¡¤Ï¡¡¼ê½ç£±£²¡¡¡ÝÌ£Êý¥­¥ã¥é¤Î°ÜÆ°·ÐÏ©¤Îɽ¼¨µ¡Ç½¤Î¼ÂÁõ¡Ý¡¡¤Ç¤¹¡£

¥³¥á¥ó¥È¤ò¤«¤¯


¡Öhttp://¡×¤ò´Þ¤àÅê¹Æ¤Ï¶Ø»ß¤µ¤ì¤Æ¤¤¤Þ¤¹¡£

ÍøÍѵ¬Ìó¤ò¤´³Îǧ¤Î¤¦¤¨¤´µ­Æþ²¼¤µ¤¤

Menu



´ðÁÃ

µ»½Ñ/Ãμ±(¼ÂÁõÎã)

3D¥¢¥¯¥·¥ç¥ó¥²¡¼¥à

2D¤ª¤Ï¤¸¤­¥²¡¼¥à(ȯŸÊÔ)

2D¶¯À©²£¥¹¥¯¥í¡¼¥ë¥¢¥¯¥·¥ç¥ó(ȯŸÊÔ)

2D¥¿¥Ã¥×¥·¥å¡¼¥Æ¥£¥ó¥°(³ÈÄ¥ÊÔ)

¥ì¡¼¥¹¥²¡¼¥à(È´¿è)

2DÊüÃÖ¥²¡¼¥à(ȯŸÊÔ)

3D¥ì¡¼¥ë¥¬¥ó¥·¥å¡¼¥Æ¥£¥ó¥°(±þÍÑÊÔ)

3Dæ½Ð¥²¡¼¥à(È´¿è)

2D¥ê¥¢¥ë¥¿¥¤¥à¥¹¥È¥é¥Æ¥¸¡¼

3D¥¿¥Ã¥×¥¢¥¯¥·¥ç¥ó(NavMeshAgent »ÈÍÑ)

2D¥È¥Ã¥×¥Ó¥å¡¼¥¢¥¯¥·¥ç¥ó(¥«¥¨¥ë¤Î°Ù¤Ë¡Á¡¢¥Ü¥³¥¹¥«¥¦¥©¡¼¥ºÉ÷)

VideoPlayer ¥¤¥Ù¥ó¥ÈϢư¤Î¼ÂÁõÎã

VideoPlayer ¥ê¥¹¥ÈÆ⤫¤é¥à¡¼¥Ó¡¼ºÆÀ¸¤Î¼ÂÁõÎã(ȯŸ)

AR ²èÁüÉÕ¤­¥ª¥Ö¥¸¥§¥¯¥ÈÀ¸À®¤Î¼ÂÁõÎã

AR ¥ê¥¹¥ÈÆ⤫¤éÀ¸À®¤Î¼ÂÁõÎã(ȯŸ)

2D¥È¥Ã¥×¥Ó¥å¡¼¥¢¥¯¥·¥ç¥ó(¥µ¥Ð¥¤¥Ð¡¼É÷)

private



¤³¤Î¥µ¥¤¥ÈÆâ¤ÎºîÉʤϥæ¥Ë¥Æ¥£¤Á¤ã¤ó¥é¥¤¥»¥ó¥¹¾ò¹à¤Î¸µ¤ËÄ󶡤µ¤ì¤Æ¤¤¤Þ¤¹¡£

´ÉÍý¿Í/Éû´ÉÍý¿Í¤Î¤ßÊÔ½¸¤Ç¤­¤Þ¤¹