ºÇ½ª¹¹¿·¡§ orika_ex_miyako 2023ǯ05·î08Æü(·î) 11:29:23ÍúÎò
¤³¤Î¼ê½ç¤Ç¤ÏŨ¥¥ã¥é¤Î·ÐÏ©¤Ë±è¤Ã¤¿°ÜÆ°¤ò¹Ô¤¦µ¡Ç½¤ò¼ÂÁõ¤·¡¢Å¨¤Î°ÜÆ°½èÍý¤ò´°À®¤µ¤»¤Þ¤¹¡£
¡¡°Ê²¼¤ÎÆâÍƤǽçÈ֤˼ÂÁõ¤ò¿Ê¤á¤Æ¤¤¤¤Þ¤¹¡£
¡ã¼ÂÁõÆ°²è¡ä
Æ°²è¥Õ¥¡¥¤¥ë¤Ø¤Î¥ê¥ó¥¯
¼ê½ç£±£°¡¡¡¼Å¨¥¥ã¥é¤Î°ÜÆ°¤È°ÜÆ°¥¢¥Ë¥á¤ÎƱ´ü½èÍý¤Î¼ÂÁõ¡¼
£±£¶¡¥EnemyController ¥¹¥¯¥ê¥×¥È¤ò½¤Àµ¤·¤Æ¡¢Å¨¥¥ã¥é¤Î°ÜÆ°¤·¤Æ¤¤¤ëÊý¸þ¤ò¼èÆÀ¤·¡¢¤½¤Î¸å¡¢°ÜÆ°¥¢¥Ë¥á¤ÈƱ´ü¤µ¤»¤ë½èÍý¤ò¼ÂÁõ¤¹¤ë £±£·¡¥EnemyController ¥¹¥¯¥ê¥×¥È¤Î¥ê¥Õ¥¡¥¯¥¿¥ê¥ó¥°¤ò¹Ô¤¤¡¢½èÍý¤ò´Ê·é²½¤¹¤ë
¡¡¿·¤·¤¤³Ø½¬ÆâÍƤϡ¢°Ê²¼¤ÎÄ̤ê¤Ç¤¹¡£
¡¡¡¦TryGetComponent ¥á¥½¥Ã¥É¤È out ¥¡¼¥ï¡¼¥ÉÀë¸À ¡¡¡¦Animator.SetFloat ¥á¥½¥Ã¥É ¡¡¡¦DOTween¤ÎÊä´Öµ¡Ç½¤È¼ÂÁõÎ㢡¡¡¼OnWaypointChange ¥á¥½¥Ã¥É¡¼ ¡¡¡¦Vector3.normalized ÊÑ¿ô¤òÍøÍѤ·¤¿Àµµ¬²½½èÍý
£±£¶¡¥EnemyController ¥¹¥¯¥ê¥×¥È¤ò½¤Àµ¤·¤Æ¡¢Å¨¥¥ã¥é¤Î°ÜÆ°¤·¤Æ¤¤¤ëÊý¸þ¤ò¼èÆÀ¤·¡¢¤½¤Î¸å¡¢°ÜÆ°¥¢¥Ë¥á¤ÈƱ´ü¤µ¤»¤ë½èÍý¤ò¼ÂÁõ¤¹¤ë
¡¡¼ÂÁõÆ°²è¤ò³Îǧ¤·¤Æ¤ß¤Æ¤¯¤À¤µ¤¤¡£¤³¤Î¤è¤¦¤ÊÆ°²è¤Ë¤Ê¤ëµóÆ°¤ò¹Ô¤¦¤¿¤á¤Ë¤Ï¤É¤¦¤¹¤ì¤Ð¤è¤¤¤«¡¢¹Í¤¨¤Æ¤ß¤Þ¤·¤ç¤¦¡£
¡¡¥Ý¥¤¥ó¥È¤Ï¼¡¤ÎÅÀ¤Ç¤¹¡£
¡¡¡¦Å¨¥¥ã¥é¤Î°ÜÆ°Êý¸þ¤Ë¹ç¤ï¤»¤Æ¡¢¤½¤Î°ÜÆ°Êý¸þ¤Î¥¥ã¥é¤Î°ÜÆ°¥¢¥Ë¥á¤¬ºÆÀ¸¤µ¤ì¤ë
¡¡º£²ó¤Ï¼ÂÁõ¤·¤Æ¤¤¤Þ¤»¤ó¤¬¡¢Ää»ßÃæ¤Î¥¢¥Ë¥á¤òÍÑ°Õ¤·¤ÆÂƧ¤ß¤ò»ß¤á¤ë¤è¤¦¤Ë¤·¤Æ¤â¤¤¤¤¤È»×¤¤¤Þ¤¹¡£
¡¡Animator ¤³¤Á¤é¤Ë¤ÆÀ½ºî¤·¤¿¥¢¥Ë¥á¤ÎÁ«°Ü½èÍý¤Ï¡¢¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤Î Animator ¥³¥ó¥Ý¡¼¥Í¥ó¥ÈÆâ¤Ë¤¢¤ë Controller ¥×¥í¥Ñ¥Æ¥£¤ÎÉôʬ¤ÇÀ©¸æ¤µ¤ì¤Æ¤¤¤Þ¤¹¡£
¤³¤Î¥³¥ó¥Ý¡¼¥Í¥ó¥È¤ÏÊ£¿ô¤Î²èÁü¤ò¤Þ¤È¤á¤Æ¥Ò¥¨¥é¥ë¥¡¼¤Ë¥É¥é¥Ã¥°¥¢¥ó¥É¥É¥í¥Ã¥×¤·¤¿ºÝ¤Ë¤Ï¡¢¼«Æ°Åª¤ËÄɲ䵤ì¤Þ¤¹¡£
Animator ¥³¥ó¥Ý¡¼¥Í¥ó¥È
¡¡Controller ¥×¥í¥Ñ¥Æ¥£¤ËÅÐÏ¿¤µ¤ì¤Æ¤¤¤ë¾ðÊ󤬡¢Àè¤Û¤É Blend Tree ¤Ê¤É¤òÀßÄꤷ¤¿¾ðÊó¤Ë¤Ê¤ê¤Þ¤¹¡£
¤½¤Î¤¿¤á¡¢¤³¤Î Controller ¤òÊѹ¹¤¹¤ë¤³¤È¤Ë¤è¤Ã¤Æ¡¢°Û¤Ê¤ë¥¢¥Ë¥á¤ÎÁ«°Ü¤ò¹Ô¤¦¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£
¡¡
¡¡¤Þ¤¿ Animator ¥Ó¥å¡¼¤Î Parameters ¤ËÀßÄꤷ¤¿¾ðÊó¤òÁàºî¤¹¤ë¤¿¤á¤Ë¤â¡¢¤³¤Î Animator ¥³¥ó¥Ý¡¼¥Í¥ó¥È¤¬É¬Íפˤʤê¤Þ¤¹¤Î¤Ç¡¢
¥¢¥Ë¥á¤ÎÀ©¸æ¤ò¹Ô¤¦¾ì¹ç¤Ë¤Ï¡¢¤³¤Î Animator ¥³¥ó¥Ý¡¼¥Í¥ó¥È¤ò¥¹¥¯¥ê¥×¥ÈÆâ¤ÇÊÑ¿ô¤Ë¼èÆÀ¤·¤Æ¡¢¤½¤ì¤òÍøÍѤ¹¤ë¤È¤¤¤¦ÊýË¡¤ÇÀ©¸æ¤ò¹Ô¤¤¤Þ¤¹¡£
¡¡Å¨¤Î°ÜÆ°¤ËºÝ¤·¤Æ¤Ï¸½ºß¤ÎŨ¥¥ã¥é¤Î°ÌÃ֤ȡ¢°ÜÆ°¤ÎÌÜɸ¤È¤Ê¤ëÃÏÅÀ¤Î°ÌÃ֤ȤÎÈæ³Ó¤Ë¤è¤Ã¤Æ¡Ö¸½ºßŨ¥¥ã¥é¤¬¸þ¤¤¤Æ¤¤¤ëÊý¸þ¡×¤Î¾ðÊó¤òÀßÄê½ÐÍè¤ë¤è¤¦¤Ë¤·¤Þ¤¹¡£
¡¡¤³¤ÎÃͤòÍøÍѤ·¤Æ¡¢°ÜÆ°¥¢¥Ë¥á¤ÎÊý¸þ¤âÀ©¸æ¤¹¤ë¤è¤¦¤Ë¤·¤Þ¤¹¡£
¡¡Blend Tree ¤ÎÉôʬ¤Ç¥¥ã¥é¤Î¥¢¥Ë¥á¤¬ÃͤÎÊѲ½¤Ë¹ç¤ï¤»¤Æ¾å²¼º¸±¦¤ÎÊý¸þ¤ËÀÚ¤êÂؤï¤Ã¤¿¤È»×¤¤¤Þ¤¹¡£
¤½¤ÎÉôʬ¤ÎÀ©¸æ¤Ë¡¢¤³¤ÎÃͤòÍøÍѤ·¡¢Î㤨¤Ð±¦Êý¸þ( Vector2 (1, 0) )¤ÎÃͤ¬¼èÆÀ½ÐÍ褿¾ì¹ç¤Ë¤Ï¡¢¤½¤ÎÃͤò Blend Tree ¤ÎÃͤÈƱ´ü¤µ¤»¤ë¤³¤È¤Ë¤è¤ê¡¢
°ÜÆ°¥¢¥Ë¥á¤ò±¦Êý¸þ¤ò¸þ¤¤¤ÆÊ⤤¤Æ¤¤¤ë¥¢¥Ë¥á¤ËÀÚ¤êÂؤ¨¤ë¤è¤¦¤Ë¤·¤Þ¤¹¡£
¡ãBlend Tree ¤È Parameter¡ä
Æ°²è¥Õ¥¡¥¤¥ë¤Ø¤Î¥ê¥ó¥¯
¡¡Æ°²è¤ò´Ñ¤ë¤È¤ï¤«¤ê¤Þ¤¹¤¬¡¢¥¤¥ó¥¹¥Ú¥¯¥¿¡¼¤Î Parameter ¤òÁàºî¤·¤Æ¥¥ã¥é¤Î¥¢¥Ë¥á¤¬ÀÚ¤êÂؤï¤ë¤È
Blend Tree ¤ÎÃæ¤Ë¤¢¤ë X ¤È Y ¤ÎÃͤ¬°ì½ï¤ËÆ°¤¤¤Æ¤¤¤ë¤³¤È¤¬¤ï¤«¤ê¤Þ¤¹¡£
¤Ä¤Þ¤ê¡¢¥¥ã¥é¤Î¸þ¤¤¤Æ¤¤¤ëÊý¸þ¤Î¾ðÊó¤ò¡¢Parameter ¤Î X ¤È Y ¤ÎÉôʬ¤ÈƱ´ü¤µ¤»¤ë¤³¤È¤¬¤Ç¤¤ì¤Ð¡¢
¤½¤Î¤Þ¤Þ¥¥ã¥é¤Î°ÜÆ°¥¢¥Ë¥á¤Ë¤âŬÍѤ¹¤ë¤³¤È¤¬¤Ç¤¤ë¤È¤¤¤¦¤³¤È¤Ë¤Ê¤ê¤Þ¤¹¡£
¡¡¤³¤ì¤¬º£²ó¤Î°ÜÆ°¥¢¥Ë¥á¤È¥¥ã¥é¤Î°ÜÆ°¤È¤òƱ´ü¤µ¤»¤ë¥í¥¸¥Ã¥¯¤Ë¤Ê¤ê¤Þ¤¹¡£
¡¡Å¨¥¥ã¥é¤ÎÀ©¸æ¤Ï EnemyController ¥¹¥¯¥ê¥×¥È¤Ë¤ª¤¤¤Æ¹Ô¤Ã¤Æ¤¤¤Þ¤¹¤Î¤Ç¡¢
°Ê¾å¤ÎÀ©¸æ½èÍý¤ò EnemyController ¥¹¥¯¥ê¥×¥È¤Ë¼ÂÁõ¤·¤Æ¡¢¥¥ã¥é¤Î°ÜÆ°¤È°ÜÆ°¥¢¥Ë¥á¤È¤òƱ´ü¤µ¤»¤Æ¤¤¤¤Þ¤¹¡£
¡¡º£²ó¤Ï¼ÂÁõÎã¤ò¤½¤Î¤Þ¤Þ·ÇºÜ¤·¤Æ¤¤¤Þ¤¹¤¬¡¢º£¸å¡¢¼«Ê¬¤Ç°ÜÆ°¥¢¥Ë¥á¤Ê¤É¤Î¼ÂÁõ¤ò¹Ô¤¦¾ì¹ç¤â¡¢Æ±¤¸¤è¤¦¤Ê¹Í¤¨Êý¤Ç¼ÂÁõ¤¬½ÐÍè¤Þ¤¹¡£
¤É¤Î½èÍý¤È¤É¤Î½èÍý¤¬¤Ä¤Ê¤¬¤Ã¤Æ¤¤¤ë¤Î¤«¡¢Unity ¤ÎÀ©¸æ¤ò¤É¤Î¤è¤¦¤Ë¤¹¤ì¤Ð¥¹¥¯¥ê¥×¥È¤«¤é¹Ô¤¨¤ë¤è¤¦¤Ë¤Ê¤ë¤Î¤«¡¢
À߷פιͤ¨Êý¡¢¥í¥¸¥Ã¥¯¤Îºî¤êÊý¤ò³Ð¤¨¤Æ¤¤¤Ã¤Æ¡¢¼«Ê¬¤Î¥²¡¼¥à¤Ë¤â³èÍѤǤ¤ë¤è¤¦¤Ë¤·¤Æ¤¯¤À¤µ¤¤¡£
¡¡¤½¤ì¤Ç¤Ï¼ÂÁõ¤ò¤·¤Æ¤ß¤Þ¤·¤ç¤¦¡£
BlendTree ¤Î Palameter ¤Ë¤Ï Animator ¥³¥ó¥Ý¡¼¥Í¥ó¥È¤¬»ý¤Ä SetFloat ¥á¥½¥Ã¥É¤òÍøÍѤ¹¤ë¤³¤È¤Ç float ·¿¤Î¾ðÊó¤òÁ÷¤Ã¤ÆÀ©¸æ¤¹¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£
¤½¤Î¤¿¤á¤Ë¤Ï Animator ¥³¥ó¥Ý¡¼¥Í¥ó¥È¤Î¾ðÊó¤ò¼èÆÀ¤·¤Æ¤ª¤¯É¬Íפ¬¤¢¤ê¤Þ¤¹¤Î¤Ç¡¢ÊÑ¿ô¤òÍÑ°Õ¤·¤Æ¤ª¤¯¤³¤È¤«¤é»Ï¤á¤Þ¤¹¡£
EnemyController.cs
¡¡¥¹¥¯¥ê¥×¥È¤ò½¤Àµ¤·¤¿¤é¥»¡¼¥Ö¤ò¤·¤Þ¤¹¡£
¡¡Unity2019.2°Ê¹ß¤ËÄɲ䵤줿¥á¥½¥Ã¥É¤Ç¤¹¡£½èÍý·ë²Ì¤È¤·¤Æ bool ·¿¤ÇÌá¤êÃͤòÊÖ¤·¤Æ¤¯¤ì¤Þ¤¹¡£
¤³¤Î¤È¤¤Î½èÍý·ë²Ì¤È¤¤¤¦¤Î¤Ï¡¢»ØÄꤷ¤¿¥³¥ó¥Ý¡¼¥Í¥ó¥È¤Î·¿¤Î¼èÆÀ¤ò¹Ô¤¤¡¢¤½¤ì¤¬¼èÆÀ¤Ç¤¤ì¤Ðtrue¡¢¼èÆÀ¤Ç¤¤Ê¤±¤ì¤Ðfalse¤¬Ìá¤ê¤Þ¤¹¡£
¡¡¤Þ¤¿ out ¥¡¼¥ï¡¼¥É¤Ë¤è¤ëÀë¸À¤¬¤¢¤ê¤Þ¤¹¡£
¡¡out ¥¡¼¥ï¡¼¥ÉÀë¸À¤ò¹Ô¤¦¤È¡¢out ¤òÉÕ¤±¤¿°ú¿ô¤Ç»ØÄꤷ¤¿ÊÑ¿ô¤Ï¥á¥½¥Ã¥ÉÆâ¤Çɬ¤º·ë²Ì¤¬Æþ¤ë¤³¤È¤¬Êݾڤµ¤ì¤ë¤â¤Î¤Ç¤¹¡£
¤½¤Î¤¿¤á¡¢½èÍý·ë²Ì¤ÎÌá¤êÃͤ¬ true ¤Î¾ì¹ç¤Ë¤Ïɬ¤º¡¢¤³¤Î out ¤Î¸å¤ËÀë¸À¤·¤¿ÊÑ¿ôÆâ¤Ë·¿¤¬ÂåÆþ¤µ¤ì¤Þ¤¹¡£
¡¡Ã¼Åª¤Ë¤¤¤¦¤Ê¤é¤Ð¡¢GetComponent ¥á¥½¥Ã¥É¤Î½èÍý¤Ë²Ã¤¨¤Æ¡¢¤½¤Î½èÍý¤ÎÀ®ÈÝȽÄê(¥³¥ó¥Ý¡¼¥Í¥ó¥È¤¬¼èÆÀ½ÐÍ褿¤«¡¢½ÐÍè¤Ê¤«¤Ã¤¿¤«)¤òƱ»þ¤Ë¹Ô¤Ã¤Æ¤¯¤ì¤ë¥á¥½¥Ã¥É¤Ë¤Ê¤ê¤Þ¤¹¡£
¡ã¼ÂÁõÎã¡¡ä
TryGetComponent(out anim);
¡ã¼ÂÁõÎ㢡¡Ìá¤êÃͤò³èÍÑ¡ä
if(col.gameObject.TryGetComponent(out Bullet bullet)) { // ½èÍý¤ò½ñ¤¯ }
¡¡º£²ó¤Ï¼ÂÁõÎ㡤νèÍý¤È¤·¤ÆÍøÍѤ·¤Æ¤¤¤Þ¤¹¡£¥¹¥¯¥ê¥×¥ÈÆâ¤Ë TryGetComponent ¥á¥½¥Ã¥É¤òľÀܵ½Ò¤·¤¿¾ì¹ç¡¢GetComponent ¥á¥½¥Ã¥É¤ÈƱÍͤˡ¢
¤³¤Î¥¹¥¯¥ê¥×¥È¤¬¥¢¥¿¥Ã¥Á¤·¤Æ¤¤¤ë¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤Î¥³¥ó¥Ý¡¼¥Í¥ó¥È¤«¤é»ØÄꤵ¤ì¤Æ¤¤¤ë¼ïÎà¤Î¥³¥ó¥Ý¡¼¥Í¥ó¥È¤ò¼èÆÀ¤·¤Æ¤Þ¤¹¡£
¤½¤ì¤ò out ¥¡¼¥ï¡¼¥É¸å¤Î anim ÊÑ¿ô¤ËÂåÆþ¤·¤Æ¤¤¤Þ¤¹¡£GetComponent ¥á¥½¥Ã¥É¤Î¤è¤¦¤Ë<·¿°ú¿ô>¤ò»ØÄꤷ¤Æ¤¤¤Ê¤¤¤Î¤Ï¡¢anime ÊÑ¿ô¤Ë¤è¤Ã¤Æ·¿¤ò¿äÏÀ¤¹¤ë¤³¤È¤¬²Äǽ¤Ç¤¢¤ë¤¿¤á¤Ç¤¹¡£
¡¡out ¥¡¼¥ï¡¼¥É°Ê¹ß¤Ë¤Ï¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤«¤é¼èÆÀ¤·¤¿¤¤·¿¤ÈÊÑ¿ô¤òÀë¸À¤·¤Þ¤¹¡£º£²ó¤Î¤è¤¦¤Ë»öÁ°¤ËÊÑ¿ô¤ÎÀë¸À¤ò¤·¤Æ¤¤¤ë¾ì¹ç¤Ë¤Ï¡¢ÊÑ¿ô¤Î¤ß¤òÍÑ°Õ¤·¤Æ¤ª¤¯¤³¤È¤¬½ÐÍè¤Þ¤¹¡£
¡¡¤â¤·¤â¤³¤Î TryGetComponent ¥á¥½¥Ã¥É¤Î½èÍý·ë²Ì¤¬¼Â¹Ô²Äǽ¤Ê¤é¤Ð¡¢¤Ä¤Þ¤ê¡¢¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤Ë Animator ¥³¥ó¥Ý¡¼¥Í¥ó¥È¤¬¥¢¥¿¥Ã¥Á¤µ¤ì¤Æ¤¤¤ë¤Î¤Ç¤¢¤ì¤Ð¡¢
out ¤È¤·¤ÆÍÑ°Õ¤·¤¿ anim ÊÑ¿ô¤Ë Animator ¥³¥ó¥Ý¡¼¥Í¥ó¥È¤Î¾ðÊó¤¬ÂåÆþ¤µ¤ì¤Þ¤¹''¡£¤Þ¤¿¡¢true ¤ÎÃͤ¬¡¢¤½¤ì¤È¤ÏÊ̤˽èÍý·ë²Ì¤È¤·¤ÆÌá¤ê¤Þ¤¹¡£
¡¡TryGetComponent ¥á¥½¥Ã¥É¤Î½èÍý·ë²Ì¤¬ false ¤Î¾ì¹ç¤Ë¤Ï Animator ¥³¥ó¥Ý¡¼¥Í¥ó¥È¤Î¼èÆÀ¤¬¤Ç¤¤Ê¤«¤Ã¤¿¤¿¤á¡¢anim ÊÑ¿ô¤Ï null ¤Î¤Þ¤Þ¤Ç¡¢false ¤¬½èÍý·ë²Ì¤È¤·¤ÆÌá¤ê¤Þ¤¹''¡£
¡¡¤Ê¤ª TryGetComponent ¥á¥½¥Ã¥É¤Ë¤ÏÊ£¿ô¤Î½ñ¼°¤¬¤¢¤ê¤Þ¤¹¡£¤³¤Á¤é¤Ï²¼µ¤Î¥ê¥Õ¥¡¥ì¥ó¥¹¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£
»²¹Í
Unity¸ø¼°¥¹¥¯¥ê¥×¥È¥ê¥Õ¥¡¥ì¥ó¥¹
Component.TryGetComponent
https://docs.unity3d.com/ScriptReference/Component...
¡¡Unity¤Î¥¢¥Ë¥á¡¼¥·¥ç¥ó¤Ï¡¢Animator¥¯¥é¥¹¤Ë¤è¤Ã¤ÆÍÍ¡¹¤Ê¥¢¥Ë¥á¡¼¥·¥ç¥ó¤ÎÀ©¸æ¤¬¹Ô¤¨¤Þ¤¹¡£
Unity¸ø¼°¥¹¥¯¥ê¥×¥È¥ê¥Õ¥¡¥ì¥ó¥¹
Animator
https://docs.unity3d.com/ja/current/ScriptReferenc...
¡¡º£²ó¤Ï¥¢¥Ë¥á¡¼¥·¥ç¥ó¤ÎÁ«°Ü¤Î¤¿¤á¤Ë¡¢SetFloat ¥á¥½¥Ã¥É¤òÍøÍѤ·¡¢Á«°Ü¤Î¾ò·ï¤ò¤³¤Î¥á¥½¥Ã¥É¤Î°ú¿ô¤Ë»ØÄꤷ¤Æ¥¢¥Ë¥á¡¼¥·¥ç¥ó¤ÎÁ«°Ü¤ò¹Ô¤Ã¤Æ¤¤¤Þ¤¹¡£
¡¡³Æ¥á¥½¥Ã¥É¤Î°ú¿ô¤Ë¤Ï¤½¤ì¤¾¤ì·¿¤Î»ØÄ꤬°Û¤Ê¤ê¤Þ¤¹¤¬¡¢¤¤¤º¤ì¤âÂè1°ú¿ô¤Ï string ·¿¤Ç¤¹¡£¤³¤ÎÉôʬ¤Ë¤Ï¡¢¥Ñ¥é¥á¡¼¥¿¤ÇÀßÄꤷ¤¿Ê¸»úÎó¤ò»ØÄꤷ¤Þ¤¹¡£
ʸ»úÎó¤Ç¤¹¤Î¤ÇÂçʸ»ú¾®Ê¸»ú¤Ï¶èÊ̤µ¤ì¤Þ¤¹¡£¥Ñ¥é¥á¡¼¥¿¤ËÅÐÏ¿¤·¤¿Ê¸»úÎó¤ò¤³¤ÎÂè1°ú¿ô¤Ë»ØÄꤹ¤ë¤³¤È¤Ç¥Ñ¥é¥á¡¼¥¿¤Î¤â¤Ä¾ðÊó¤òÊѹ¹¤¹¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£
¤½¤·¤Æ¡¢¥Ñ¥é¥á¡¼¥¿¤ÎÃͤòÊѹ¹¤¹¤ëÆâÍƤòÂè2°ú¿ô¤Ë»ØÄꤷ¤Þ¤¹¡£
¡¡Î㤨¤Ð¡¢SetFloat¤Ç¤¢¤ì¤Ð¡¢Âè1°ú¿ô¤Ë float ·¿¤Î¥Ñ¥é¥á¡¼¥¿¤Ç¤¢¤ë "X" ¤Îʸ»úÎó¤ò»ØÄꤷ¡¢Âè2°ú¿ô¤Ë float ·¿¤ÎÃͤò»ØÄꤷ¤Þ¤¹¡£
anim.SetFloat("Y", 0f); anim.SetFloat("X", -1.0f);
¡¡¤³¤¦¤¹¤ë¤³¤È¤Ç¡¢¤³¤Î¥Ñ¥é¥á¡¼¥¿¤ÎÃͤò¥¹¥¯¥ê¥×¥È¤«¤é½ñ¤´¹¤¨¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£¤½¤Î·ë²Ì¤È¤·¤Æ¡¢¾ò·ï¤¬¹çÃפ·¤¿¥¢¥Ë¥á¡¼¥·¥ç¥ó¤ËÁ«°Ü¤¹¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£
¡ã¥Ñ¥é¥á¡¼¥¿¤È Set¡Á¥á¥½¥Ã¥É¤Î´ØÏ¢À¡ä
»²¹Í¥µ¥¤¥È
Unity¸ø¼°¥¹¥¯¥ê¥×¥È¥ê¥Õ¥¡¥ì¥ó¥¹
SetFloat
https://docs.unity3d.com/ja/current/ScriptReferenc...
¡¡¥²¡¼¥à¤ò¼Â¹Ô¤·¤Æ¤ß¤Þ¤·¤ç¤¦¡£Å¨¥¥ã¥é¤ò¥Ò¥¨¥é¥ë¥¡¼¤ÇÁªÂò¤·¤¿¾õÂÖ¤Ç Animator ¥Ó¥å¡¼¤òɽ¼¨¤¹¤ì¤Ð¡¢BlendTree ¤ÎÁ«°Ü¤Î³Îǧ¤â¹Ô¤¦¤³¤È¤¬½ÐÍè¤Þ¤¹¡£
¡ã¼ÂÁõÆ°²è¡ä
Æ°²è¥Õ¥¡¥¤¥ë¤Ø¤Î¥ê¥ó¥¯
¡¡Console ¥Ó¥å¡¼¤ò³Îǧ¤·¤Æ¤¯¤À¤µ¤¤¡£
¡¡Ìµ»ö¤ËÀ©¸æ¤ò¹Ô¤¦¤³¤È¤¬½ÐÍè¤Æ¤¤¤Þ¤¹¤¬¡¢½èÍý¤È¤·¤Æ Update ¥á¥½¥Ã¥É¤Ç°ÜÆ°¥¢¥Ë¥á¤ÎÊѹ¹¤ò´Æ»ë¤·¤ÆÀ©¸æ¤·¤Æ¤¤¤ë¤¿¤á¡¢
Èó¾ï¤ËÂçÎ̤ΠDebug.Log ¥á¥½¥Ã¥É¤¬¼Â¹Ô¤µ¤ì¤Æ¤¤¤ë¡¢¤Ä¤Þ¤ê¡¢¤½¤ì¤À¤± Update ¥á¥½¥Ã¥É¤Î½èÍý¤¬Æ°¤¤¤Æ¤¤¤ë¤³¤È¤¬Ê¬¤«¤ê¤Þ¤¹¡£
¡¡Å¨¥¥ã¥é£±ÂΤǤ³¤ì¤À¤±¤Î½èÍý¤ò¹Ô¤¤¤Þ¤¹¤Î¤Ç¡¢¤â¤Ã¤ÈŨ¥¥ã¥é¤¬Áý¤¨¤ë¤³¤È¤¬ÁÛÄꤷ¤¿¾ì¹ç¡¢¥²¡¼¥àÆâ¤Ë¤«¤«¤ëÉé²Ù¤ÏÈó¾ï¤Ë¹â¤¯¤Ê¤Ã¤Æ¤·¤Þ¤¦¤Ç¤·¤ç¤¦¡£
¡¡¼¡¤Î¼ê½ç¤Ç¤Ï¤³¤Î´ÑÅÀ¤«¤é¡¢¤É¤Î¤è¤¦¤Ë¤¹¤ì¤ÐƱ¤¸¤è¤¦¤ËÀ©¸æ¤ò¹Ô¤¤¤Ä¤Ä¡¢Éé²Ù¤ò·Ú¸º¤·¤Æ¤¤¤¯¤³¤È¤¬¤Ç¤¤ë¤Î¤«¡¢À߷פ«¤é¹Í¤¨¤Æ¤¤¤¤Þ¤¹¡£
¡¡Ìµ»ö¤ËŨ¥¥ã¥é¤Î°ÜÆ°¤È°ÜÆ°¥¢¥Ë¥á¤È¤òƱ´ü¤µ¤»¤Æ¡¢²èÌ̾å¤ÎÉÔ¶ñ¹ç¤ò½¤Àµ¤¹¤ë¤³¤È¤¬¤Ç¤¤Þ¤·¤¿¡£
¡¡¤³¤³¤Ç¤Ï¼ÂÁõ¤·¤¿½èÍý¤ÎÆâÍƤˤĤ¤¤Æ¡¢ºÆÅٹͤ¨¤Æ¡¢²¿¤«ÌäÂêÅÀ¤Ï¤Ê¤¤¤«¡¢¤¢¤ë¤Î¤Ç¤¢¤ì¤Ð½¤Àµ¤¬²Äǽ¤ÊÉôʬ¤¬¤Ê¤¤¤«¤òÀººº¤·¤Æ¤¤¤¤Þ¤¹¡£
¤³¤ì¤Ï¼ê½ç£¸¤Ç¤â³Ø½¬¤·¤¿¥ê¥Õ¥¡¥¯¥¿¥ê¥ó¥°¤È¤¤¤¦ºî¶È¤Ë¤Ê¤ê¤Þ¤¹¤Î¤Ç¡¢ÆâÉôŪ¤Ê½èÍý¤Î½¤Àµ¤Ë¤Ê¤ê¤Þ¤¹¡£
¤½¤Î¤¿¤á¡¢¸½ºß¼ÂÁõ¤·¤Æ¤¤¤ë½èÍý¼«ÂΤϽ¤ÀµÁ°¤ÈƱ¤¸¤è¤¦¤ËÆ°¤¤¤Æ¤¤¤ë¤³¤È¤òǰƬ¤Ë½èÍý¤ò½¤Àµ¤·¤Æ¤¤¤¯É¬Íפ¬¤¢¤ê¤Þ¤¹¡£
¡¡½¤Àµ¤·¤¿¤é¡¢¥¢¥Ë¥á¤¬Æ±´ü¤·¤Ê¤¯¤Ê¤Ã¤Æ¤·¤Þ¤Ã¤¿¡¢¤Ç¤Ï¥ê¥Õ¥¡¥¯¥¿¥ê¥ó¥°¤È¤Ï¸À¤¨¤Ê¤¤¤¿¤á¤Ç¤¹¡£
¡¡
¡¡EnemyController ¥¹¥¯¥ê¥×¥È¤ò¤·¤Ã¤«¤ê¤ÈÆɤßÊÖ¤·¤Æ¡¢½èÍý¤ÎÆâÍƤòÇÄ°®¤·¤Æ¤¯¤À¤µ¤¤¡£
¤½¤ì¤òÁ°Äó¤Ë¡¢¥ê¥Õ¥¡¥¯¥¿¥ê¥ó¥°¤Î¤¿¤á¤ÎÀ߷פòÀâÌÀ¤·¤Þ¤¹¡£
¡¡¸½ºß¤Î°ÜÆ°¥¢¥Ë¥á¤ÎÀ©¸æ½èÍý¤Ï¡¢Update ¥á¥½¥Ã¥É¤«¤éËè¥Õ¥ì¡¼¥à ChangeAnimeDirection ¥á¥½¥Ã¥É¤ò¼Â¹Ô¤·¡¢¸½ºß¤ÎŨ¥¥ã¥é¤Î°ÌÃÖ¤È
ÌÜɸÃÏÅÀ¤È¤Ê¤ë°ÌÃ֤ȤòÈæ³Ó¤·¤Æ¡¢¤½¤ÎÈæ³Ó·ë²Ì¤Ë¤è¤Ã¤Æ°ÜÆ°¥¢¥Ë¥á¤ÎºÆÀ¸¤òʬ´ô½èÍý¤·¤ÆÀ©¸æ¤·¤Æ¤¤¤Þ¤¹¡£
¤¤¤ï¤Ð¡¢¾ï¤ËŨ¥¥ã¥é¤Î°ÌÃÖ¤ò´Æ»ë¤·¡¢¤½¤ì¤Ë´ð¤Å¤¤¤Æ¡¢°ÜÆ°¥¢¥Ë¥á¤ÎÀ©¸æ¤·¤Æ¤¤¤ëÀ߷פǤ¹¡£
¡¡
¡¡¤³¤Î¤È¤¤Î¼ç¤ÊÌäÂêÅÀ¤È¤·¤Æ¤Ï¡¢¡ÖƱ¤¸Êý¸þ¤Ë°ÜÆ°¤·¤Æ¤¤¤Æ¤â¡¢¤½¤ÎÅÔÅÙ¡¢°ÜÆ°¥¢¥Ë¥á¤Ø¤Îʬ´ô½èÍý¤Ë¤è¤Ã¤ÆºÆÀ¸Ì¿Î᤬¼Â¹Ô¤µ¤ì¤Æ¤¤¤ë¡×Éôʬ¤Ç¤¹¡£
¤½¤ì¤Ï¤Ä¤Þ¤ê¡¢Update ¥á¥½¥Ã¥É¤òÍøÍѤ·¤Æ¤¤¤ë¸½ºß¤ÎÀß·×¼«ÂΤËÌäÂ꤬¤¢¤ë¡¢¤È¤â¸À¤¨¤Þ¤¹¡£¤³¤³¤ò²þÁ±¤Ç¤¤Ê¤¤¤«¡¢²þÁ±¤¹¤ë¤Ë¤Ï¤É¤¦¤¹¤ì¤Ð¤¤¤¤¤«¤ò¹Í¤¨¤Æ¤ß¤Þ¤¹¡£
¡¡°ÜÆ°¤Î¥¢¥Ë¥á¤Ï°ÜÆ°¤·¤Æ¤¤¤ëÊý¸þ¤¬Æ±¤¸¤Ç¤¢¤ë¾ì¹ç¤Ë¤Ï¡¢¥¢¥Ë¥á¤òÊѹ¹¤¹¤ëɬÍפϤ¢¤ê¤Þ¤»¤ó¡£±¦Êý¸þ¤Ë°ÜÆ°¤·¤Æ¤¤¤ëºÇÃæ¤Ë¡¢²¿²ó¤â±¦Êý¸þ¤Î¥¢¥Ë¥á¤òºÆÀ¸¤¹¤ëɬÍפϤʤ¤¤¿¤á¤Ç¤¹¡£
¤³¤ì¤ò¸µ¤Ë¡¢¤Ç¤Ï¡¢¤É¤ó¤Ê»þ¤Ë¥¢¥Ë¥á¤òÊѹ¹¤¹¤ëɬÍפ¬À¸¤¸¤ë¤Î¤«¡¢¤ò¹Í¤¨¤Æ¤¤¤¯¤³¤È¤¬ÂçÀڤǤ¹¡£
¡¡¤½¤ì¤ÏŨ¥¥ã¥é¤Î°ÜÆ°¤¹¤ëÊý¸þ¤¬Êѹ¹¤Ë¤Ê¤Ã¤¿¤È¤¤Ë¡¢¥¢¥Ë¥á¤ÎÊѹ¹¤ò¤¹¤ëɬÍפ¬²ÄǽÀ¤È¤·¤ÆÀ¸¤Þ¤ì¤Þ¤¹¡£
£Á ÃÏÅÀ¤«¤é £Â ÃÏÅÀ¤Ø°ÜÆ°¤·¤¿¤È¤¤Ë¡¢Æ±¤¸Êý¸þ¤Ç¤¢¤ì¤Ð¡¢²þ¤á¤ÆƱ¤¸Êý¸þ¤Î°ÜÆ°¥¢¥Ë¥á¤òºÆÀ¸¤·¡¢¤½¤ì°Ê³°¤ÎÊý¸þ¤Ç¤¢¤Ã¤¿¾ì¹ç¤Ë¤Ï
¤½¤ÎÊý¸þ¤Ë±þ¤¸¤¿°ÜÆ°¥¢¥Ë¥á¤ØÀÚ¤êÂؤ¨¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£
¡¡¤Ä¤Þ¤ê¡¢Å¨¥¥ã¥é¤Î°ÜÆ°¤·¤Æ¤¤¤ë´Ö¤ò´Æ»ë¤¹¤ë¤è¤ê¤Ï¡¢Å¨¥¥ã¥é¤¬£±¤ÄÌܤÎÌÜŪÃϤËÃ夤¤¿¤È¤¤Ë¡¢¼¡¤ÎÌÜŪÃϤÎÊý¸þ¤¬·è¤Þ¤Ã¤¿¥¿¥¤¥ß¥ó¥°¤Ç
°ÜÆ°¤Î¥¢¥Ë¥á¤ÎÊѹ¹¤â¹Ô¤¨¤ì¤Ð¡¢¥¿¥¤¥ß¥ó¥°Åª¤ËŬÀڤʽèÍý¤Ë¤Ê¤ë¤È¤¤¤¦¤³¤È¤Ç¤¹¡£
¡¡¤³¤Î½èÍý¤ÎÊýË¡¤Î¤è¤¤Éôʬ¤Ï¡¢Update ¥á¥½¥Ã¥É¤Ë¤è¤ëËè¥Õ¥ì¡¼¥à¤Î´Æ»ë½èÍý¤Ç¤Ï¤Ê¤¯¡¢ÌÜŪÃϤˤĤ¤¤¿¤é¡¢¤È¤¤¤¦¥¿¥¤¥ß¥ó¥°¤¬ÌÀ³Î¤Ë¤Ê¤Ã¤¿¤³¤È¤Ç
¤½¤Î¥¿¥¤¥ß¥ó¥°¤Ë¹ç¤ï¤»¤Æ¡¢ChangeAnimeDirection ¥á¥½¥Ã¥É¤ò¼Â¹Ô¤¹¤ë¤³¤È¤¬½ÐÍè¤ì¤Ðº£¤Þ¤Ç¤ÈƱ¤¸¤è¤¦¤Ë°ÜÆ°¥¢¥Ë¥á¤ÎÊѹ¹¤¬²Äǽ¤Ë¤Ê¤ê¤Þ¤¹¡£
¡¡¤â¤¦£±¤Ä¤Ï¡¢Ê¬´ô½èÍý¤Î¿¤µ¡¢¤Ç¤¹¡£
¸½ºß¤Ï¡¢Å¨¥¥ã¥é¤ÈÌÜŪÃϤȤòÈæ³Ó¤·¡¢¤½¤Îº¹Ê¬Ãͤ˹ç¤ï¤»¤Æ°ÜÆ°¥¢¥Ë¥á¤ò£´¼ïÎà¤Ëʬ´ô½èÍý¤·¤Æ¤¤¤Þ¤¹¡£
¤³¤Î½èÍý¤ò¤É¤Î¤è¤¦¤Ë¤¹¤ì¤Ð´Ê·é¤Ëµ½Ò¤¹¤ë¤³¤È¤¬½ÐÍè¤ë¤è¤¦¤Ë¤Ê¤ë¤«¡¢¤È¸¡Æ¤¤·¤Æ¤ß¤Þ¤¹¡£
¡¡Ê¬´ô¤Î¿ô¤ò¸º¤é¤¹ÊýË¡¤Ç¹Í¤¨¤Æ¡¢ºÇ½ªÅª¤Ë¤Ïʬ´ô¼«ÂΤò¤Ê¤¯¤·¤Æ£±¤Ä¤Î½èÍý¤È¤·¤Æµ½Ò¤¹¤ë¤³¤È¤¬²Äǽ¤«¤É¤¦¤«¡¢¤Þ¤Ç¤òÆͤµÍ¤á¤Æ¹Í¤¨¤Æ¤¤¤¤Þ¤¹¡£
¡¡¤³¤Î¤è¤¦¤ËÀß·×¤È¥×¥í¥°¥é¥à¤Î¥í¥¸¥Ã¥¯¤ÏÌ©ÀܤʴØÏ¢À¤¬¤¢¤ê¤Þ¤¹¡£¤è¤¤¥í¥¸¥Ã¥¯¤ò¹Í¤¨¤Æ½èÍý¤òµ½Ò¤Ç¤¤Ê¤¤¤«¤òǰƬ¤ËÃÖ¤¤¤Æºî¶È¤ò¤·¤Þ¤·¤ç¤¦¡£
¡ãÀß·×Êѹ¹ÌÜɸ¡ä
¡¡£±¡¥Update ¥á¥½¥Ã¥É¤òÍøÍѤ·¤Ê¤¤À߷פò¹Í¤¨¤ë ¡¡£²¡¥Ê¬´ô¤ò¾¯¤Ê¤¯¤¹¤ë¡¢¤¢¤ë¤¤¤Ï¤Ê¤¯¤·¤Æ½èÍý¤ò´Ê·é¤Ë¤¹¤ë
¡¡¤½¤Î¤¿¤áº£²ó¤Ï¡¢¤³¤ì¤é¤ÎÌäÂêÅÀ¤ò£²²ó¤Ëʬ¤±¤Æ¡¢¥¹¥¯¥ê¥×¥È¤Î¥ê¥Õ¥¡¥¯¥¿¥ê¥ó¥°¤ò¹Ô¤¤¤Þ¤¹¡£
¡¡¤É¤Î¤è¤¦¤Ë¤¹¤ì¤Ð¤¤¤¤¤Î¤«¤ò¡¢¤Þ¤º¤Ï¼«Ê¬¤Ç¹Í¤¨¤Æ¤ß¤Æ¡¢¼ÂºÝ¤Ë¥¹¥¯¥ê¥×¥È¤ò½¤Àµ¤·¤Æ¤ß¤Þ¤·¤ç¤¦¡£
¡¡¤Þ¤º¤Ï¡¢Update ¥á¥½¥Ã¥É¼«ÂΤòÍøÍѤ·¤Ê¤¤¡¢¤È¤¤¤¦´ÑÅÀ¤«¤é¡¢Update ¥á¥½¥Ã¥ÉÁ´ÂΤò¥³¥á¥ó¥È¥¢¥¦¥È¤·¤Æ¤«¤éºî¶È¤ò³«»Ï¤·¤Þ¤¹¡£
¤É¤¦¤¹¤ì¤Ð¡¢ChangeAnimeDirection ¥á¥½¥Ã¥É¤òŬÀڤʥ¿¥¤¥ß¥ó¥°¤Ç¼Â¹Ô¤Ç¤¤ë¤Î¤«¤ò¹Í¤¨¤Æ½èÍý¤òµ½Ò¤·¤Þ¤¹¡£
¡¡Å¨¥¥ã¥é¤Î°ÜÆ°¤Ë¤Ï DOTween ¤Î DOPath ¥á¥½¥Ã¥É¤ò¼Â¹Ô¤·¤ÆÀ©¸æ¤·¤Æ¤¤¤Þ¤¹¡£
¤³¤Î DOPath ¥á¥½¥Ã¥É¤Ë¤ÏÀìÍѤdzÈÄ¥ÍѤΠOnWaypointChange ¥á¥½¥Ã¥É¤¬ÍÑ°Õ¤µ¤ì¤Æ¤¤¤Þ¤¹¡£
¡¡OnWaypointChange ¥á¥½¥Ã¥É¤Îµ¡Ç½¤Ï¡¢DOPath ¥á¥½¥Ã¥É¤Ë³¤±¤Æµ½Ò¤¹¤ë¤³¤È¤Ë¤è¤ê¡¢Âè1°ú¿ô¤Ë¤·¤Æ¤¤¤ë°ÜÆ°ÃÏÅÀ¤ËÅþ㤹¤ë¤¿¤Ó¤Ë¡¢
OnWaypointChange ¥á¥½¥Ã¥ÉÆâ¤ËÅÐÏ¿¤·¤Æ¤ª¤¤¤¿½èÍý¤ò£±²ó¤À¤±¼Â¹Ô¤·¤Æ¤¯¤ì¤ë¡¢¤È¤¤¤¦ÊØÍø¤Ê¥á¥½¥Ã¥É¤Ç¤¹¡£
¤³¤Î¤è¤¦¤Ë¡¢»ØÄꤵ¤ì¤¿¥¿¥¤¥ß¥ó¥°¤Ç¼«Æ°Åª¤Ë¼Â¹Ô¤µ¤ì¤ë¤è¤¦¤Ë¤Ê¤Ã¤Æ¤¤¤ë¥á¥½¥Ã¥É¤ò¥³¡¼¥ë¥Ð¥Ã¥¯¡¢¤Þ¤¿¤Ï¥³¡¼¥ë¥Ð¥Ã¥¯¡¦¥á¥½¥Ã¥É¤È¤¤¤¤¤Þ¤¹¡£
¤¹¤Ç¤ËÍøÍѤ·¤Æ¤¤¤ë¤â¤Î¤È¤·¤Æ¤Ï¡¢OnTriggerEnter2D ¥á¥½¥Ã¥É¤Ê¤É¤âƱ¤¸¥³¡¼¥ë¥Ð¥Ã¥¯¥á¥½¥Ã¥É¤Î£±¤Ä¤Ç¤¹¡£
¡¡
¡¡º£²ó¼ÂÁõ¤·¤è¤¦¤È¤·¤Æ¤¤¤ë¡Ö°ÜÆ°ÃÏÅÀ¤¬ÊѤï¤Ã¤Æ°ÜÆ°ÊýË¡¤¬ÊѤï¤ë¤¿¤Ó¡×¤È¤¤¤¦¥¿¥¤¥ß¥ó¥°¤È¤Ô¤Ã¤¿¤ê¤Ê¥³¡¼¥ë¥Ð¥Ã¥¯¡¦¥á¥½¥Ã¥É¤Ç¤¹¤Î¤Ç¡¢
Update ¥á¥½¥Ã¥É¤Ç¤Ï¤Ê¤¯¡¢OnWaypointChange ¥á¥½¥Ã¥ÉÆâ¤Ç ChangeAnimeDirection ¥á¥½¥Ã¥É¤ò¼Â¹Ô¤¹¤ë¤è¤¦¤Ë½èÍý¤òÊѹ¹¤·¤Þ¤¹¡£
¡¡¤³¤Î OnWaypointChange ¥á¥½¥Ã¥É¤Ï¡¢ÌÜɸÃÏÅÀ¤ËÅþ㤹¤ë¤¿¤Ó¤Ë¼«Æ°Åª¤Ë£±²ó¤À¤±¸Æ¤Ó½Ð¤µ¤ì¤Þ¤¹¡£
¤³¤Î¤È¤¡¢°ú¿ô¤È¤·¤Æ DOPath ¥á¥½¥Ã¥É¤ÎÂè1°ú¿ô¤Ë»ØÄꤷ¤Æ¤¤¤ë Vector3 ·¿¤ÎÇÛÎó¤Î¸½ºß¤ÎÍ×ÁÇÈÖ¹æ¤ò int ·¿¤Ç¼èÆÀ¤·¤Æ¤¤¤Þ¤¹¡£
¤Ä¤Þ¤ê¡¢¤³¤ÎÇÛÎó¤ÎÈÖ¹æ¤Þ¤Ç°ÜÆ°¤¬½ªÎ»¤·¤Æ¤¤¤ë¡¢¤È¤¤¤¦¤³¤È¤ò¶µ¤¨¤Æ¤¯¤ì¤ë¤è¤¦¤Ë¤â¤Ê¤Ã¤Æ¤¤¤Þ¤¹¤Î¤Ç¡¢¤³¤Î¾ðÊó¤â³èÍѤ·¤Þ¤¹¡£
¡¡°ÜÆ°¥¢¥Ë¥á¤Îʬ´ô½èÍý¤Ë¤Ï currentPos ÊÑ¿ô¤òÍøÍѤ·¤Æ¤¤¤Þ¤·¤¿¤¬¡¢¤³¤ì¤Ï Update ¥á¥½¥Ã¥É¤Ç¾ï¤ËÆ°¤¤¤Æ¤¤¤ëŨ¥¥ã¥é¤Î°ÌÃÖ¤ò´Æ»ë¤¹¤ë¤¿¤á¤ÎÊÑ¿ô¤Ç¤¹¡£
¤³¤Î¾ðÊó¤Ï¡¢Update ¥á¥½¥Ã¥É¤òÍøÍѤ·¤Ê¤¤¤¿¤á¡¢º£²ó¤ÎÊѹ¹¤Ç¤ÏÍøÍѤǤ¤Ê¤¯¤Ê¤Ã¤Æ¤¤¤ë¾ðÊó¤Ç¤¹¡£
¡¡Ê¬´ô½èÍý¤Ë¤Ï¤³¤ÎÃͤȸ½ºß¤ÎŨ¥¥ã¥é¤Î°ÌÃ֤ȤÇÈæ³Ó¤·¤Æ°ÜÆ°¤·¤Æ¤¤¤ëÊý¸þ¤òÇÄ°®¤·¤Æ¤«¤é¡¢°ÜÆ°¥¢¥Ë¥á¤Îʬ´ô½èÍý¤ò¹Ô¤Ã¤Æ¤¤¤Þ¤·¤¿¤¬
¤³¤ÎÉôʬ¤ò¡Ö¼¡¤Ë°ÜÆ°¤¹¤ëÃÏÅÀ¤Î¾ðÊó¡×¤ËÊѹ¹¤·¤Þ¤¹¡£¼¡¤Ë°ÜÆ°¤¹¤ëÃÏÅÀ¤È¤Ï¡¢paths ÇÛÎóÊÑ¿ô¤Î²¿ÈÖÌܤȤ¤¤¦¾ðÊó¤Ë¤Ê¤ê¤Þ¤¹¡£
¡¡ºÇ½é¤Î¥¹¥¿¡¼¥ÈÃÏÅÀ¤Ç¤¢¤ì¤Ð paths[0] ¤ÎÍ×ÁÇ(Ãæ¿È¤ÎÃÍ)¤¬¡¢¤½¤³¤«¤é¤ß¤Æ¼¡¤ÎÃÏÅÀ¤È¤Ï paths[1] ¤ÎÍ×ÁǤȤʤê¤Þ¤¹¡£
¡¡Àè¤Û¤É¤â¤ªÅÁ¤¨¤·¤¿¤è¤¦¤Ë¡¢OnWaypointChange ¥á¥½¥Ã¥É¤Ç¤Ï¡¢¤³¤ÎÈÖ¹æ¤ò int ·¿¤Ç¶µ¤¨¤Æ¤¯¤ì¤ë¤è¤¦¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¤Î¤Ç¡¢
paths ÇÛÎó¤ÎÍ×ÁÇÈÖ¹æ¤Ë OnWaypointChange ¥á¥½¥Ã¥É¤Î°ú¿ô¤Î¾ðÊó¤òÍøÍѤ¹¤ë¤³¤È¤Ç¡¢¼«Æ°Åª¤Ë¼¡¤ÎÃÏÅÀ¤ò³Îǧ¤¹¤ë¤³¤È¤¬½ÐÍè¤ë»ÅÁȤߤǤ¹¡£
¡¡¤³¤ì¤é¤ÎÊ£¹çŪ¤Ê½èÍý¤òÁȤ߹ç¤ï¤»¤Æ¡¢£±¤Ä¤Î¥í¥¸¥Ã¥¯¤ò¹Í¤¨¤Æ¡¢½èÍý¤òµ½Ò¤·¤Þ¤¹¡£
EnemyController.cs
¡¡¥¹¥¯¥ê¥×¥È¤ò½¤Àµ¤·¤¿¤é¥»¡¼¥Ö¤ò¤·¤Þ¤¹¡£
¡¡¿·¤·¤¯¼ÂÁõ¤ò¹Ô¤Ã¤¿ DOTween ¤Îµ¡Ç½¤Ë¤Ä¤¤¤Æ¡¢³Æ¥á¥½¥Ã¥É¤ò½çÈÖ¤ËÀâÌÀ¤·¤Þ¤¹¡£
¡¡// ³ÆÃÏÅÀ¤Ë¸þ¤±¤Æ°ÜÆ° transform.DOPath(paths, 1000 / moveSpeed).SetEase(Ease.Linear).OnWaypointChange(ChangeAnimeDirection);
¡¡DOPath ¥á¥½¥Ã¥É¤ò¼Â¹Ô¤·¤Æ¤¤¤ë½èÍý¤Ë¤Î¤ßÄɲäǤ¤ë¥á¥½¥Ã¥É¤Ç¤¹¡£¤³¤ìñÂΤǤÏÆ°ºî¤·¤Þ¤»¤ó¡£
¡¡¤³¤Î½èÍý¤òµ½Ò¤·¤Æ¤ª¤¯¤³¤È¤Ë¤è¤ê¡¢DOPath ¥á¥½¥Ã¥É¤ÎÂ裱°ú¿ô¤Ç»ØÄꤷ¤Æ¤¤¤ëÇÛÎó¤ÎºÂɸ¤Ë°ÜÆ°¤¹¤ë¤¿¤Ó¤Ë¡¢£±²ó¤À¤±½èÍý¤ò¼Â¹Ô¤·¤Þ¤¹¡£
OnWaypointChange ¥á¥½¥Ã¥É¤Î¼Â¹Ô¤Ë¤¢¤¿¤ê¡¢int ·¿¤Î¸½ºß¤ÎÇÛÎó¤ÎÈÖ¹æ¤ò¼èÆÀ¤·¤Æ¤¯¤ì¤Þ¤¹¡£
¤½¤Î¤¿¤á¡¢OnWaypointChange ¥á¥½¥Ã¥É¤ÎÃæ¤Ë¤¢¤ë½èÍý¤ò¼Â¹Ô¤¹¤ëºÝ¤Ë¤Ï¡¢¤³¤ÎÈÖ¹æ¤òÍøÍѤ·¤Æ½èÍý¤òµ½Ò¤¹¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£
¤Ê¤ª¡¢°ú¿ô¤¬¼«Æ°Åª¤ËÆþ¤ê¤Þ¤¹¤¬¡¢¤è¤ê¤ï¤«¤ê¤ä¤¹¤¯µ½Ò¤¹¤ë¾ì¹ç¤Ë¤Ï°Ê²¼¤Î¤è¤¦¤Ë¤âµ½Ò¤Ç¤¤Þ¤¹¡£
transform.DOPath(paths, 1000 / moveSpeed).SetEase(Ease.Linear).OnWaypointChange(x => ChangeAnimeDirection(x));
transform.DOPath(paths, 1000 / moveSpeed).SetEase(Ease.Linear).OnWaypointChange(ChangeAnimeDirection);
¡¡¤É¤Á¤é¤âƱ¤¸½èÍý¤Ë¤Ê¤ê¤Þ¤¹¡£¼«Ê¬¤Î¤ï¤«¤ê¤ä¤¹¤¤Êý¤Î½ñ¼°¤òÍøÍѤ·¤Æ¤¯¤À¤µ¤¤¡£
¡¡¤½¤ì¤Ç¤Ï¡¢¥²¡¼¥à¤ò¼Â¹Ô¤·¤ÆÆ°ºî¤ò³Îǧ¤·¤Þ¤¹¡£
ÇùÁ³¤ÈÆ°¤«¤¹¤Î¤Ç¤Ï¤Ê¤¯¡¢¤É¤ÎÉôʬ¤¬Êѹ¹¤Ë¤¢¤Ã¤Æ¤¤¤ë¤«¤òÍý²ò¤·¤¿¾å¤Ç¡¢¥²¡¼¥à¤ò¼Â¹Ô¤·¤Æ¤¤¤¯¤è¤¦¤Ë¤·¤Æ¤¯¤À¤µ¤¤¡£
¥×¥í¥°¥é¥à¤Ø¤ÎÍý²òÅÙ¤¬ÊѤï¤Ã¤Æ¤¤Þ¤¹¡£
¡ã¼ÂÁõÆ°²è¡ä
Æ°²è¥Õ¥¡¥¤¥ë¤Ø¤Î¥ê¥ó¥¯
¡¡ÌÜɸÃÏÅÀ¤ËÅþã¤Î¥¿¥¤¥ß¥ó¥°¤Ç ChangeAnimeDirection ¥á¥½¥Ã¥É¤¬£±²ó¤À¤±¸Æ¤Ó½Ð¤µ¤ì¤ë¤è¤¦¤Ë¤Ê¤Ã¤¿¤Î¤Ç¡¢
Debug.Log ¥á¥½¥Ã¥É¤Î¼Â¹Ô¥¿¥¤¥ß¥ó¥°¤â¤½¤ì¤Ë¹ç¤ï¤»¤Æ£±²ó¤º¤Ä¤Ë¤Ê¤Ã¤Æ¤ª¤ê¡¢½èÍý²ó¿ô¤¬·ã¸º¤·¤Æ¤¤¤ë¤³¤È¤¬Ê¬¤«¤ê¤Þ¤¹¡£
¡¡¤³¤ì¤Ë¤è¤ê¡¢¥²¡¼¥à¤Î¸«¤¿Ìܾå¤ÏƱ¤¸¤Ç¤¹¤¬¡¢Update ¥á¥½¥Ã¥É¤Ë¤è¤ëÉé²Ù¤Î¤«¤«¤ë´Æ»ë·¿¤Î½èÍý¤«¤é¡¢É¬Íפʥ¿¥¤¥ß¥ó¥°¤Ë±þ¤¸¤ÆŬÀڤʽèÍý¤ò£±²ó¤À¤±¹Ô¤¦¡¢¤È¤¤¤¦
̵Â̤ò¾Ê¤¤¤¿½èÍý¤ËÊѹ¹¤Ë¤Ê¤ê¤Þ¤·¤¿¡£
¡¡¼ê½ç£¸¤Ç¤â³Ø½¬¤·¤Þ¤·¤¿¤¬¡¢¤³¤Î¤è¤¦¤Ë¡¢¥²¡¼¥à¤Î¸«¤¿ÌܤäɽÌ̾å¤ÎÆ°¤¤ÏÊѤ¨¤º¡¢ÆâÉôŪ¤Ê½¤Àµ¤Î¤ß¤ò¹Ô¤¤¡¢
½èÍý¤Î¸úΨ²½¤ò¿Þ¤Ã¤Æ¤¤¤¯¼êË¡¤ò¥ê¥Õ¥¡¥¯¥¿¥ê¥ó¥°¤È¤¤¤¤¤Þ¤¹¡£
¡¡BlendTree ¤Ë¤è¤ëÀßÄê¤ä¡¢EnemyController ¤Î¥×¥í¥°¥é¥à¤òÀµ¤·¤¯½ñ¤¤¤Æ¤¤¤ë¤Ë¤â¤«¤«¤ï¤é¤º¡¢
°ÜÆ°¥¢¥Ë¥á¡¼¥·¥ç¥ó¤Î¸þ¤¤¬¡¢°ÜÆ°Êý¸þ¤ÏÈ¿ÂФˤʤäƤ·¤Þ¤¦¤³¤È¤¬¤¢¤ê¤Þ¤¹¡£
¡ã¸¡¾ÚÆ°²è¡ä
Æ°²è¥Õ¥¡¥¤¥ë¤Ø¤Î¥ê¥ó¥¯
¡¡¤³¤ì¤Ï¥×¥í¥°¥é¥à¤ÎÆâÍƤ˴ط¸¤·¤Æ¤¤¤Þ¤¹¡£
¡¡Å¨¥¥ã¥é¤Î¸þ¤¤Î·×»»ÊýË¡¤Ç¤¹¤¬¡¢Å¨¥¥ã¥é¤ò Instantiate ¤·¤¿°ÌÃÖ¤ò¥¹¥¿¡¼¥ÈÃÏÅÀ¤È¤·¡¢¤½¤Î°ÌÃÖ¤«¤é¼¡¤ÎÌÜɸ¤È¤Ê¤ëÃÏÅÀ¤ò·×»»¤·¤Æ°ÜÆ°Êý¸þ¤ò»»½Ð¤¹¤ëÆâÍƤǤ¹¡£
¤Ç¤¹¤¬¸½ºß¤Ï¡¢Instantiate ¤Ç¤Ï¤Ê¤¯¤Æ¡¢¥Ç¥Ð¥Ã¥°ÍѤ˥ҥ¨¥é¥ë¥¡¼¤ËÇÛÃÖ¤·¤Æ¤¤¤ë¾õÂÖ¤«¤é°ÜÆ°¤ò³«»Ï¤·¤Æ¤¤¤ë¤¿¤á¡¢ºÂɸ¤Î·×»»¤¬¤º¤ì¤Æ¤·¤Þ¤Ã¤Æ¤¤¤Þ¤¹¡£
¡¡¸½ºßÃÏÅÀ¡¡¢ª¡¡ÌÜɸÃÏÅÀ¤ÇÆ°¤¤¤Æ¤¤¤ë¤Î¤Ç¤¹¤¬¡¢Instantiate ¤·¤¿¾ì¹ç¤Î¸½ºßÃÏÅÀ¤ÏÇÛÎó¤Î 0 ÈÖÌܤκÂɸ¤ÇÀ¸À®¤µ¤ì¤Æ¡¢ÇÛÎó¤Î1ÈÖÌܤ¬ÌÜɸÃÏÅÀ¤È¤Ê¤ê¤Þ¤¹¡£
¡¡ºÇ½é¤«¤é¥Ò¥¨¥é¥ë¥¡¼¤Ë¤¢¤ë¾ì¹ç¡¢À¸À®¤Î¼ê½ç¤¬¤Ê¤¤¤Î¤Ç¡¢ÇÛÎó¤Î 0 ÈÖÌܤ¬ÌÜɸÃÏÅÀ¤È¤Ê¤ê¤Þ¤¹¡£
¡¡¤³¤Î¤è¤¦¤Ë¡¢ÍøÍѤ¹¤ë¾ðÊ󤬡¢Instantiate ¤ò»È¤¦¤«»È¤ï¤Ê¤¤¤«¤Ç¤º¤ì¤Æ¤·¤Þ¤¦¤¿¤á¡¢¤³¤Î¤è¤¦¤Ê¸½¾Ý¤¬È¯À¸¤·¤Æ¤¤¤Þ¤¹¡£
¡¡¤³¤ÎÉôʬ¤Ï¼ê½ç£±£³¤ÇŨ¥¥ã¥é¤ò¼«Æ°À¸À®¤¹¤ëµ¡Ç½¤Î½èÍý¤¬½Ð¤Æ¤¤Þ¤·¤Æ¡¢¤½¤Îµ¡Ç½¤ò¼ÂÁõ¤¹¤ë¤³¤È¤ÇÀµ¾ï¤Ê°ÜÆ°¤Î¸þ¤¤ËÌá¤ê¤Þ¤¹¡£
¤½¤Î¤¿¤á¡¢¤¤¤Þ¤Ï¤Á¤ç¤Ã¤Èµ¤¤Ë¤Ê¤ë¤È»×¤¤¤Þ¤¹¤¬¡¢¤½¤Î¤Þ¤Þ¤ÇÌäÂꤢ¤ê¤Þ¤»¤ó¡£
¡¡ºÇ¸å¤Ë£²¤ÄÌܤÎÌäÂêÅÀ¤ò½¤Àµ¤·¤Þ¤¹¡£
¸½ºß¡¢°ÜÆ°¥¢¥Ë¥á¤òÀ©¸æ¤¹¤ë¤¿¤á¤Ë¤Ïʬ´ô¤¬£´¤Ä¤¢¤ê¡¢¤½¤Î¤¤¤º¤ì¤Ëʬ´ô¤¹¤ë¤«¤òŨ¥¥ã¥é¤È¼¡¤ÎÌÜŪÃϤȤε÷Î¥¤Ë¤è¤Ã¤ÆȽÄꤷ¤Æ¤¤¤Þ¤¹¡£
¡¡¤³¤ÎÉôʬ¤ò½¤Àµ¤·¡¢Ê¬´ô¤Î¤¿¤á¤Ë¸ÇÄêÃͤÇÍøÍѤ·¤Æ¤¤¤ë SetFloat ¥á¥½¥Ã¥É¤ÎÂè2°ú¿ô¤òÊÑ¿ô²½¤¹¤ë¤³¤È¤Ë¤è¤Ã¤Æ½èÍý¤ò°ì¸µ²½¤·¤Þ¤¹¡£
¡¡Å¨¥¥ã¥é¤È¼¡¤ÎÌÜŪÃϤΰÌÃ֤ϡ¢Vector3 ·¿Æ±»Î¤Î¸º»»¤ò¹Ô¤¦¤³¤È¤Ë¤è¤êµ÷Î¥¤ò·×»»¤Ç¤¤Þ¤¹¤¬¡¢¤³¤Î»þ¡¢°ì½ï¤ËÊý¸þ¤Î¾ðÊó¤â¼èÆÀ¤·¤Æ¤¤¤Þ¤¹¡£
¼èÆÀ¤·¤¿ÃͤËÂФ·¤ÆÀµµ¬²½¤È¤¤¤¦½èÍý¤ò¹Ô¤¦¤³¤È¤Ë¤è¤ê¡¢Êý¸þ¤Î¾ðÊó¤Ï¤½¤Î¤Þ¤Þ¤Ë¡¢µ÷Î¥¤ò°ìÄêÃͤËÊÑ´¹¤¹¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£
¡¡BlendTree ¤Ç¤Ï£²¤Ä¤Î Palametr X ¤È Y ¤Ë -1 ¡Á 1 ¤ÎÃͤòÀßÄꤹ¤ë¤³¤È¤Ë¤è¤Ã¤Æ¡¢¥¥ã¥é¤Î°ÜÆ°¥¢¥Ë¥á¤¬£´¼ïÎà¤Ë¼«Æ°Åª¤Ëʬ´ô¤·¤Þ¤¹¡£
¤³¤ÎÀµµ¬²½¤·¤Æ»»½Ð¤µ¤ì¤¿¾ðÊó¤Ï¡¢-1 ¡Á 1 (0 ¤â¤¢¤ë)¤Î¤¤¤º¤ì¤«¤Î¾ðÊó¤Î¤Ë¤Ê¤ê¤Þ¤¹¤Î¤Ç¡¢¤³¤ì¤ò¤½¤Î¤Þ¤Þ BlendTree ¦¤ËÀßÄꤹ¤ë¤³¤È¤Ç
£´¤Ä¤Ëʬ´ô¤·¤ÆÀ©¸æ¤·¤Æ¤¤¤¿½èÍý¤ò£±¤Ä¤Î½èÍý¤È¤·¤Æ¤Þ¤È¤á¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£
¡¡°Ê²¼¤Î¾õÂÖ¤ò¼ÂÁõ¤¹¤ë¥¤¥á¡¼¥¸¤Ç¤¹¡£
¡ãBlend Tree ¤ÈÀµµ¬²½¤µ¤ì¤¿Å¨¥¥ã¥é¤ÎÊý¸þ¾ðÊó¤È¤ÎϢư¡ä
Æ°²è¥Õ¥¡¥¤¥ë¤Ø¤Î¥ê¥ó¥¯
¡¡¤½¤ì¤Ç¤Ï¤³¤Î½èÍý¤ò¼ÂÁõ¤·¤Æ¤ß¤Þ¤·¤ç¤¦¡£
EnemyController.cs
¡¡¥¹¥¯¥ê¥×¥È¤ò½¤Àµ¤·¤¿¤é¥»¡¼¥Ö¤ò¤·¤Þ¤¹¡£
¡¡¤Ê¤ª¡¢¤³¤Î¾ì¹ç¤Ç¤â°ÜÆ°¤ÎÊý¸þ¤È°ÜÆ°¥¢¥Ë¥á¤Î¸þ¤¤¬È¿ÂФˤʤë¾ì¹ç¤â¤¢¤ê¤Þ¤¹¡£
¤½¤Î¾ì¹ç¤Ë¤Ï¡¢°ìö¡¢²¼µ¤Î¤è¤¦¤Ë·×»»¼°¤òµÕ¤Ë¤·¤Æ¤ª¤¯¤³¤È¤Ç²þÁ±¤Ç¤¤Þ¤¹¡£
// ÌÜɸ¤Î°ÌÃ֤ȸ½ºß¤Î°ÌÃ֤Ȥε÷Î¥¤ÈÊý¸þ¤ò¼èÆÀ¤·¡¢Àµµ¬²½½èÍý¤ò¹Ô¤¤¡¢Ã±°Ì¥Ù¥¯¥È¥ë¤È¤¹¤ë(Êý¸þ¤Î¾ðÊó¤Ï»ý¤Á¤Ä¤Ä¡¢µ÷Î¥¤Ë¤è¤ë®ÅÙº¹¤ò¤Ê¤¯¤·¤Æ°ìÄêÃͤˤ¹¤ë) Vector3 direction = (paths[index] - transform.position).normalized;¡¡//¡¡¢«¡¡·×»»¼°¤òµÕ¤Ë¤·¤Æ¤¤¤ë
¡¡¤¿¤À¤·¡¢¤³¤ÎÊýË¡¤òÍøÍѤ·¤¿¾ì¹ç¡¢¼ê½ç£±£³¤Ë¤ÆŨ¥¥ã¥é¤Î¼«Æ°À¸À®¤Î½èÍý¤òÄɲä·¤¿¤¢¤È¤Ë¤Ï¡¢¸µ¤ÎÀµ¤·¤¤·×»»¼°¤ËÌ᤹ɬÍפ¬¤¢¤ê¤Þ¤¹¡£
¡¡Àµµ¬²½½èÍý¤Ç¤¹¡£magnitude(¥Þ¥°¥Ë¥Á¥å¡¼¥É¡£Ä¹¤µ)¤ò£±¤È¤·¤¿¥Ù¥¯¥È¥ë(ñ°Ì¥Ù¥¯¥È¥ë)¤òÊÖ¤·¤Þ¤¹¡£Ìá¤êÃÍ¤Ï Vector3 ·¿¤Ë¤Ê¤ê¤Þ¤¹¡£
// ÌÜɸ¤Î°ÌÃ֤ȸ½ºß¤Î°ÌÃ֤Ȥε÷Î¥¤ÈÊý¸þ¤ò¼èÆÀ¤·¡¢Àµµ¬²½½èÍý¤ò¹Ô¤¤¡¢Ã±°Ì¥Ù¥¯¥È¥ë¤È¤¹¤ë(Êý¸þ¤Î¾ðÊó¤Ï»ý¤Á¤Ä¤Ä¡¢µ÷Î¥¤Ë¤è¤ë®ÅÙº¹¤ò¤Ê¤¯¤·¤Æ°ìÄêÃͤˤ¹¤ë) Vector3 direction = (transform.position - paths[index]).normalized;
¡¡¸½ºß¤Î¥Ù¥¯¥È¥ë¤ÎÊý¸þ¤ò°Ý»ý¤·¤¿¤Þ¤Þ¡¢magnitude¤¬£±¡¢¤¢¤ë¤¤¤Ï£°¤Îñ°Ì¥Ù¥¯¥È¥ë¤òºîÀ®¤¹¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£¡Ê¥Ù¥¯¥È¥ë¤ÎÃͤ¬¾®¤µ¤¤¤È£°¤Ë¤Ê¤ê¤Þ¤¹¡£¡Ë
¡¡¤³¤ÎÀµµ¬²½¤ò¹Ô¤¦¤³¤È¤Ë¤è¤Ã¤Æ°ÌÃ֤αó¶á¤Ë´Ø¤ï¤é¤º¡¢magnitude ¤¬¤¹¤Ù¤Æ 1¡¢¤¢¤ë¤¤¤Ï 0 ¤ËÅý°ì¤µ¤ì¤¿Ã±°Ì¥Ù¥¯¥È¥ë¤ÎÃͤȤʤ뤿¤á¡¢
º¸¤È²¼¤ÎÊý¸þ¤Ç¤¢¤ì¤Ð -1¡¢±¦¤È¾å¤ÎÊý¸þ¤Ç¤¢¤ì¤Ð 1¤ÎÃͤ¬¥Ù¥¯¥È¥ë¤È¤·¤ÆºîÀ®¤µ¤ì¤Þ¤¹¡£Ãͤ¬ 0 ¤Ë¶á¤¤¾ì¹ç¤Ë¤Ï 0 ¤¬¥Ù¥¯¥È¥ë¤È¤·¤ÆºîÀ®¤µ¤ì¤Þ¤¹¡£
¡¡¤³¤ÎÃͤò BlendTree ¤Î³ÆÃͤȤ·¤ÆÍøÍѤ¹¤ë¤³¤È¤Ë¤è¤ê¡¢BlendTree ¤Î Palameter ¤ÎÀßÄêÃͤȤ³¤ÎÀµµ¬²½¤µ¤ì¤¿ÃͤȤ¬¥ê¥ó¥¯¤·¤Æ¡¢°ÜÆ°¥¢¥Ë¥á¤ÎÀÚ¤êÂؤ¨½èÍý¤¬¼ÂÁõ½ÐÍè¤Æ¤¤¤Þ¤¹¡£
Unity¸ø¼°¥¹¥¯¥ê¥×¥È¡¦¥ê¥Õ¥¡¥ì¥ó¥¹
https://docs.unity3d.com/ja/current/ScriptReferenc...
TechProjinÍÍ
Unity¤ÎVector3¤Ç¤è¤¯»È¤¦¤â¤Î¤Þ¤È¤á
https://tech.pjin.jp/blog/2016/02/16/unity_vector3...
¡¡¥Ý¥¤¥ó¥È¤È¤·¤Æ¤Ç¤¹¤¬¡¢Vector3 ¤Î¾ðÊóƱ»Î¤ò·×»»¤·¤¿¤À¤±¤Ç¤ÏÀµµ¬²½¤Ï¹Ô¤ï¤ì¤Þ¤»¤ó¡£
¡¡²¾¤Ë¡¢¤³¤ó¤ÊÃͤòÆþ¤ì¤Æ¤ß¤Þ¤·¤ç¤¦¡£
Vector3 direction = (10, 5, 0) - (5, 3, 0);
¡¡normalize ¤¬¤Ê¤¤¾ì¹ç¡¢direction ¤ÎÃͤÏñ½ã¤Ë°ú¤»»¤µ¤ì¤¿·ë²Ì¤¬Æþ¤ë¤¿¤á¡¢
Vector3 direction = 5, 2, 0;
¡¡¤³¤ÎÃͤ¬ÂåÆþ¤µ¤ì¤ë¤³¤È¤Ë¤Ê¤ê¤Þ¤¹¡£Ãͤò¸«¤ì¤Ð°ìÌÜÎÆÁ³¤Ê¤Î¤Ç¤¹¤¬¡¢Àµµ¬²½¤µ¤ì¤¿ÃͤˤϤʤäƤ¤¤Þ¤»¤ó¡£
¡¡¤³¤ÎÃͤËÂФ·¤ÆÀµµ¬²½¤Î½èÍý¤ò¹Ô¤¦¤È¡¢»»½Ð·ë²Ì¤ÎÃͤòñ°Ì¥Ù¥¯¥È¥ë¤ËÊÑ´¹¤·¤Þ¤¹¡£
Vector3 direction = 1, 1, 0;
¡¡Àµµ¬²½¤µ¤ì¤ë¤È¡¢¤³¤Î¤è¤¦¤Êñ°Ì¥Ù¥¯¥È¥ë¤ÎÃͤ¬ÂåÆþ¤µ¤ì¤ë¤³¤È¤Ë¤Ê¤ê¤Þ¤¹¡£
¡¡Ã±°Ì¥Ù¥¯¥È¥ë¤Ï¡¢Êý¸þ¤Î¾ðÊó¤Ï¤½¤Î¤Þ¤ÞÊÝ»ý¤·¡¢Â®Å٤Τߤò 1 ¤« 0 ¤« -1 ¤Ëºî¤êľ¤·¤Þ¤¹¡£
¡¡¤Ä¤Þ¤ê¡¢Êý¸þ¤Î¾ðÊó¤À¤±¤ÏºÇ½é¤Ë·×»»¤·¤¿ (5, 2, 0) ¤Î¾ðÊó¤ò»ý¤Á¤Ä¤Ä¡¢Â®ÅÙ¤Î¤ß (1, 1, 0) ¤Ëºî¤êľ¤·¤Æ¤¤¤Þ¤¹¡£
(¤³¤Î¤È¤¡¢ÃͤϤ¹¤Ç¤ËÀµµ¬²½¤µ¤ì¤Æ¤¤¤ë¤Î¤Ç¡¢Debug.Log ¥á¥½¥Ã¥É¤òÍѤ¤¤Æ¤â¸µ¤Ë¤Ê¤Ã¤Æ¤¤¤ëÊý¸þ¤Î¾ðÊó¼«ÂΤϳÎǧ¤Ç¤¤Þ¤»¤ó¡£)
¡¡¤Ê¤¼¤³¤Î½èÍý¤¬É¬Íפˤʤ뤫¡¢¤Ç¤¹¤¬¡¢¤³¤ì¤Ï Unity ¤Î¶µ²Ê½ñ¤Î¥¤¥¬¥°¥ê¤òÈô¤Ð¤¹¥²¡¼¥à¤ÎÃæ(373¥Ú¡¼¥¸)¤Ç¤â´Êñ¤Ë¤Ç¤¹¤¬¡¢²òÀ⤵¤ì¤Æ¤¤¤Þ¤¹¡£
¡¡¤Þ¤ºÃ±½ã¤Ë Vector3 Ʊ»Î¤ò·×»»¤·¤¿¤À¤±¤Ç¤¹¤È¡¢Êý¸þ¤È®ÅÙ¤¬Æ±¤¸ÃͤȤ·¤ÆÊÝ»ý¤µ¤ì¤Þ¤¹¡£
¥¤¥á¡¼¥¸¤·¤Ë¤¯¤¤¤Î¤Ç¤¹¤¬¡¢Vector3 ¤Î (x, y, z) ¤ÎÃͤȤ¤¤¦¤Î¤ÏºÂɸ¤Î¾ðÊó¤À¤±¤Ç¤Ï¤Ê¤¯¡¢
¤½¤ì¤ò¸µ¤Ë¡Ö¤É¤Ã¤Á¤ò¸þ¤¤¤Æ¤¤¤ë¡×¡Ö®ÅÙ¤¬¤É¤Î°Ì¤Ç¤¢¤ë¡×¤È¤¤¤¦£²¤Ä¤Î¾ðÊó¤ò»ý¤Ã¤Æ¤¤¤Þ¤¹¡£
¡¡Àè¤Û¤É¤ÎÎã¤ò¸µ¤ËÀâÌÀ¤¹¤ë¤È¡¢(5, 2, 0) ¤È (10, 2, 0) ¤È¤¤¤¦¥Ù¥¯¥È¥ë¤ÎÃͤ¬¤¢¤Ã¤¿¾ì¹ç¡¢
Ʊ¤¸¼Ð¤áÊý¸þ¤ò¸þ¤¤¤Æ¤¤¤Æ¤â¡¢ÃͤÎÂ礤¤ (10, 2, 0) ¤ÎÊý¤¬Â®ÅÙ¤¬Â®¤¯¤Ê¤ê¤Þ¤¹¡£
¡¡¤½¤Î¤¿¤á¡¢£²¤Ä¤ÎÃÏÅÀ¤¬±ó¤¯Î¥¤ì¤ì¤ÐÎ¥¤ì¤ëÄø¡¢Â®ÅÙ¤¬Â®¤¯¤Ê¤Ã¤Æ¤·¤Þ¤¦¤¿¤á¡¢Ã±½ã¤Ë°ú¤»»¤·¤¿Ãͤò°ÜÆ°¤ÎÃͤËľÀܻȤäƤ·¤Þ¤¦¤È
Ʊ¤¸Êý¸þ¤ËÂФ·¤Æ¡¢°Û¤Ê¤ë®Å٤ξðÊó¤Ç½èÍý¤¬¹Ô¤ï¤ì¤ë¤è¤¦¤Ë¤Ê¤Ã¤Æ¤·¤Þ¤¤¤Þ¤¹¡£
¡¡
¡¡¤½¤Î¾ì¹ç¡¢Æ±¤¸Êý¸þ¤ËÂФ·¤Æ°ÜÆ°¤¹¤ëºÝ¤Ë¡¢¤è¤ê±ó¤¯¤Ë°ÜÆ°¤¹¤ë®ÅÙ¤ÎÊý¤¬Á᤯¤Ê¤Ã¤Æ¤·¤Þ¤¤¤Þ¤¹¤Î¤Ç¡¢
º£²ó¤Î¾ì¹ç¤Ç¤¢¤ì¤Ð¡¢°ÜÆ°¤¹¤ëºÝ¤Î®ÅÙ¤¬°ÜÆ°ÃÏÅÀ¤¬Î¥¤ì¤Æ¤¤¤ì¤ÐÎ¥¤ì¤Æ¤¤¤ë¤Û¤ÉÁ᤯¤Ê¤ë¤³¤È¤Ë¤Ê¤ê¤Þ¤¹¡£
¡¡A ¢ª B ¤Ë°ÜÆ°¤¹¤ë¤È¤¡¢¤½¤Îº¹Ê¬ÃͤǤ¢¤ë direction ¤¬ (5, 2, 0) ¤È (10, 2, 0) ¤Ç¤¢¤Ã¤¿¤é¡¢
Ʊ¤¸Êý¸þ¤Ë°ÜÆ°¤¹¤ë¤Î¤Ç¤¹¤¬¡¢ (10, 2, 0) ¤ÎÊý¤¬Á᤯°ÜÆ°¤·¤Æ¤·¤Þ¤¦¡¢¤È¤¤¤¦µóÆ°¤Ë¤Ê¤ê¤Þ¤¹¡£
¥¤¥¬¥°¥ê¤Î¾ì¹ç¤Ç¤¢¤ì¤Ð¡¢²èÌ̤Îü¤ò¥¯¥ê¥Ã¥¯¤¹¤ì¤Ð¤¹¤ë¤Û¤É¡¢¥«¥á¥é¤Î°ÌÃÖ¤è¤ê±ó¤¯¤Ê¤ë¤Î¤Ç¡¢Æ±ÍͤËȯ¼Í®ÅÙ¤¬Â®¤¯¤Ê¤ê¤Þ¤¹¡£
¡¡¤³¤¦¤¤¤Ã¤¿¡¢Êý¸þ¤È®Å٤ˤè¤ëµóÆ°¤ÎÉÔÁ´¤òËɤ°¤¿¤á¤Ë¡¢
¡ÖÊý¸þ¤Î¾ðÊó¤Ï¤½¤Î¤Þ¤Þ¡×¤Ç¡Ö®ÅÙ¤ò¶Ñ°ì²½¡×¤¹¤ë¡¢Àµµ¬²½¤Î½èÍý¤¬É¬ÍפˤʤäƤ¤¤ë¡¢¤È¤¤¤¦¤³¤È¤Ë¤Ê¤ê¤Þ¤¹¡£
¡¡¤½¤Î·ë²Ì¡¢(5, 2, 0) ¤È (10, 2, 0) ¤Ï¡¢¤½¤Î¤Þ¤Þ®Å٤ǻȤäƤ·¤Þ¤¦(ñ½ã¤Ë°ú¤»»¤·¤¿¤À¤±¤À)¤È¡¢°ÜÆ°¤Î®ÅÙ¤¬ÊѤï¤Ã¤Æ¤·¤Þ¤¤¤Þ¤¹¤¬¡¢
normalize ¤¹¤ë¤³¤È¤Ç¡¢ÃÏÅÀ¤Î±ó¶á¤¬¤¢¤Ã¤¿¤È¤·¤Æ¤â¡¢¤É¤Á¤é¤â (1,1,0) ¤Ë¤Ê¤ë¤¿¤á¡¢¾ï¤ËƱ¤¸Â®Å٤ǰÜÆ°¤·¤Æ¤¯¤ì¤ë¡¢¤È¤¤¤¦»Å³Ý¤±¤Ç¤¹¡£
(5, 2, 0) ¤òÀµµ¬²½¡¡¢ª¡¡Â®ÅÙ¤Ï (1, 1, 0)¡¡¤¿¤À¤·¡¢Êý¸þ¤Ï(5,2,0) ¤Î¤Þ¤Þ (10, 2, 0) ¤òÀµµ¬²½¡¡¢ª¡¡Â®ÅÙ¤Ï (1, 1, 0) ¡¡¤¿¤À¤·¡¢Êý¸þ¤Ï(10,2,0) ¤Î¤Þ¤Þ
¡¡¤³¤Î¤è¤¦¤ËÀµµ¬²½¤Î½èÍý¤òÍøÍѤ¹¤ë¤³¤È¤Ë¤è¤Ã¤Æ¡¢ÁÛÄꤷ¤Æ¤¤¤ë½èÍý¤ÎµóÆ°¤Ë¤Ê¤ê¤Þ¤¹¡£
¡¡¥²¡¼¥à¤ò¼Â¹ÔÁ°¤Ë¡¢¥Ò¥¨¥é¥ë¥¡¼¤Ë¤¢¤ëŨ¥¥ã¥é¤Î¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤òÁªÂò¤·¡¢Animator ¥Ó¥å¡¼¤Ë¤·¤Æ¤ª¤¤Þ¤¹¡£
Animator ¥³¥ó¥Ý¡¼¥Í¥ó¥È¤¬¥¢¥¿¥Ã¥Á¤µ¤ì¤Æ¤¤¤ë¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤òÁªÂò¤·¤Æ¤¤¤ë¾ì¹ç¡¢¥²¡¼¥à¤ò¼Â¹Ô¤¹¤ë¤È¡¢¤½¤Î¥¢¥Ë¥á¤Î¾õÂ֤˹ç¤ï¤»¤Æ
¥ê¥¢¥ë¥¿¥¤¥à¤Ë¥¢¥Ë¥á¤ÎÁ«°Ü½èÍý¤ò³Îǧ¤¹¤ë¤³¤È¤¬½ÐÍè¤ë¤¿¤á¤Ç¤¹¡£
¡¡¥²¡¼¥à¤ò¼Â¹Ô¤·¤ÆµóÆ°¤ò³Îǧ¤·¤Þ¤¹¡£¤¤¤Þ¤Þ¤Ç¤ÈƱ¤¸¤è¤¦¤Ë°ÜÆ°¥¢¥Ë¥á¤ÎÀ©¸æ¤¬¹Ô¤ï¤ì¤Æ¤¤¤ì¤ÐÀ®¸ù¤Ç¤¹¡£
¡ã¼ÂÁõÆ°²è¡ä
Æ°²è¥Õ¥¡¥¤¥ë¤Ø¤Î¥ê¥ó¥¯
¡¡Update ¥á¥½¥Ã¥É¤Ç¤ÎÉé²Ù¤Î¤«¤«¤ë´Æ»ë½èÍý¤â¤Ê¤¯¤Ê¤ê¡¢Å¬Àڤʥ¿¥¤¥ß¥ó¥°¤Ç¤Î¤ß°ÜÆ°¥¢¥Ë¥á¤ÎÀÚ¤êÂؤ¨¤¬¹Ô¤ï¤ì¤ë¤è¤¦¤Ë¤Ê¤ê¤Þ¤·¤¿¡£
¤Þ¤¿¡¢°ÜÆ°¥¢¥Ë¥á¤ÎÀ©¸æ¤Ë¤Ä¤¤¤Æ¤â¡¢Ä¹¤¤Ê¬´ô½èÍý¤Ç¤Ï¤Ê¤¯¡¢£±¤Ä¤Î½èÍý¤òÊÑ¿ô¤Ë¤è¤Ã¤Æ BlendTree ¦¤Ç¼«Æ°Åª¤ËÀ©¸æ¤ò¹Ô¤¨¤ë¤è¤¦¤Ë¤Ê¤ê¤Þ¤·¤¿¡£
¡¡¤³¤Î¤è¤¦¤Ë¼ÂÁõ¤·¤Æ´°À®¡¢¤Ç¤Ï¤Ê¤¯¤Æ¡¢½¤Àµ²Õ½ê¤¬¤Ê¤¤¤«¤É¤¦¤«¤ò¹Í¤¨¤ë¤³¤È¤Ç¡¢¥³¡¼¥Ç¥£¥ó¥°µ»½Ñ¤äÀß·×µ»½Ñ¤òÍܤäƤ¤¤¯¤³¤È¤¬½ÐÍè¤Þ¤¹¡£
¡¡Enemy ¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤È PathTranSet ¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤ÈξÊý¤Î¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤ò¥×¥ì¥Õ¥¡¥Ö¤Ë¤·¤Æ¤¯¤À¤µ¤¤¡£
Enemy ¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤ò¥×¥ì¥Õ¥¡¥Ö¤Ë¤¹¤ë¤È¡¢PathData ÊÑ¿ô¤Î¥¢¥µ¥¤¥ó¤¬³°¤ì¤Æ¤·¤Þ¤¤¤Þ¤¹¤Î¤Ç¡¢
ɬ¤º¥×¥ì¥Õ¥¡¥Ö¤Ë¤·¤¿ PathTranSet ¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤ò¥É¥é¥Ã¥°¥¢¥ó¥É¥É¥í¥Ã¥×¤·¤Æ¥¢¥µ¥¤¥ó¤·Ä¾¤·¤Æ¤¯¤À¤µ¤¤¡£
¡¡¥×¥ì¥Õ¥¡¥Ö¤Ë¤·¤Þ¤·¤¿¤¬¡¢¼¡¤Î¼ê½ç°Ê¹ß¤Ç¤Þ¤À¤³¤ì¤é¤Î¾ðÊó¤ò»È¤¤¤Þ¤¹¡£
¤½¤ì¤¬½ªÎ»¤·¤Æ¤«¤é¡¢¥Ò¥¨¥é¥ë¥¡¼¤Ë¤¢¤ë Enemy ¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤È PathTranSet ¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤òºï½ü¤¹¤ë¤è¤¦¤Ë¤·¤Þ¤¹¡£
¡¡°Ê¾å¤Ç¤³¤Î¼ê½ç¤Ï½ªÎ»¤Ç¤¹¡£
¡¡¼¡¤Ï¡¡¼ê½ç£±£±¡¡¡ÝÌ£Êý¥¥ã¥é¤Î¹¶·âÈϰϤÎÀßÄê¤ÈŨ¥¥ã¥é¤ÎÇ˲õ½èÍý¤Î¼ÂÁõ¡Ý¡¡¤Ç¤¹¡£
- ¥«¥Æ¥´¥ê¡§
- ¿Ê³Ø/¥¹¥¯¡¼¥ë
- ¥×¥í¥°¥é¥ß¥ó¥°
¥³¥á¥ó¥È¤ò¤«¤¯