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

¡¡£²²ó¤Ëʬ¤±¤Æ¡¢Å¨¥­¥ã¥é¤Î°ÜÆ°½èÍý¤ò¼ÂÁõ¤·¤Þ¤¹¡£
¤³¤Î¼ê½ç¤Ç¤ÏŨ¥­¥ã¥é¤Î·ÐÏ©¤Ë±è¤Ã¤¿°ÜÆ°¤ò¹Ô¤¦µ¡Ç½¤ò¼ÂÁõ¤·¡¢Å¨¤Î°ÜÆ°½èÍý¤ò´°À®¤µ¤»¤Þ¤¹¡£

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

¼ê½ç£¸¡¡¡¼Å¨¥­¥ã¥é¤Î°ÜÆ°½èÍý¤Î¼ÂÁõ¡¼
£±£³¡¥EnemyController ¥¹¥¯¥ê¥×¥È¤òºîÀ®¤·¡¢Å¨¥­¥ã¥é¤ò PathData ¥¹¥¯¥ê¥×¥È¤Ç»ØÄꤷ¤¿·ÐÏ©¤Ë±è¤Ã¤Æ°ÜÆ°¤µ¤»¤ë



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

¡¡¡¦¥á¥½¥Ã¥É¡¦¥Á¥§¡¼¥ó
¡¡¡¦DOTween¤ÎÊä´Öµ¡Ç½¤È¼ÂÁõÎã­¡¡¡¡¼DOPath ¥á¥½¥Ã¥É¡¢SetEase ¥á¥½¥Ã¥É¡¼
¡¡¡¦¥ê¥Õ¥¡¥¯¥¿¥ê¥ó¥°
¡¡¡¦Linq¤Îµ¡Ç½¤Î¼ÂÁõÎã­¡¡¡¡ÁSelect ¥á¥½¥Ã¥É¡¢ToArray ¥á¥½¥Ã¥É¡Á



£±£³¡¥EnemyController ¥¹¥¯¥ê¥×¥È¤òºîÀ®¤·¡¢Å¨¥­¥ã¥é¤ò PathData ¥¹¥¯¥ê¥×¥È¤Ç»ØÄꤷ¤¿·ÐÏ©¤Ë±è¤Ã¤Æ°ÜÆ°¤µ¤»¤ë

£±¡¥Àß·×


¡¡·ÐÏ©¤ÎÀßÄ꤬´°Î»¤·¤Þ¤·¤¿¤Î¤Ç¡¢Â³¤¤¤Æ¤Ï¡¢¤³¤Î¾ðÊó¤ò¥²¡¼¥àÆâ¤ËÈ¿±Ç¤·¤Æ¡¢Å¨¥­¥ã¥é¤Î°ÜÆ°¤¹¤ë·ÐÏ©¤È¤·¤Æ±¿ÍѤǤ­¤ëµ¡Ç½¤ò¹Í¤¨¤Þ¤¹¡£

¡¡Å¨¥­¥ã¥é¤Î¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤Ë¤Ï¡¢¤³¤Î¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤ÎÀ©¸æ¤ò¹Ô¤¦¤¿¤á¤Î¥¹¥¯¥ê¥×¥È¤¬¤¢¤ê¤Þ¤»¤ó¤Î¤Ç¡¢
¤Þ¤º¤ÏŨ¥­¥ã¥éÍѤΥ¹¥¯¥ê¥×¥È¤òºîÀ®¤·¡¢¤½¤ì¤ËÀ©¸æ¤ò¤µ¤»¤ë¤³¤È¤òÀ߷פȤ·¤Æ¸¡Æ¤¤·¤Þ¤¹¡£

¡¡¥¹¥¯¥ê¥×¥È¤¬¥¢¥¿¥Ã¥Á¤µ¤ì¤Æ¤¤¤ë¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤Ï¡¢Transform ¥³¥ó¥Ý¡¼¥Í¥ó¥È¤ò»²¾È¤¹¤ë¤³¤È¤Ë¤è¤Ã¤Æ
Position ¤Î¾ðÊó¤òÀ©¸æ¤¹¤ë¤³¤È¤¬½ÐÍè¤ë¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¤Î¤Ç¡¢¤³¤ÎÀ߷פˤè¤ê¡¢Å¨¥­¥ã¥é¤Î°ÜÆ°½èÍý¤¬¼ÂÁõ¤Ç¤­¤ë¤è¤¦¤Ë¤Ê¤ë¤¿¤á¤Ç¤¹¡£

¡¡°ÜÆ°ÊýË¡¤Ç¤¹¤¬¡¢¼ê½ç£²¤Ç¥¤¥ó¥Ý¡¼¥È¤·¤Æ¤¢¤ë DOTween ¤Îµ¡Ç½¤òÍøÍѤ·¤Þ¤¹¡£
DOTween ¤Ë¤Ï°ÜÆ°´ØÏ¢¤ÎÊØÍø¤Ê¥á¥½¥Ã¥É¤¬Ê£¿ôÍÑ°Õ¤µ¤ì¤Æ¤ª¤ê¡¢¤½¤ÎÃæ¤Î DOPath ¥á¥½¥Ã¥É¤òÍøÍѤ¹¤ë¤³¤È¤Ë¤è¤Ã¤Æ
ÇÛÎó¤Ç»ØÄꤷ¤¿°ÌÃÖ¾ðÊó¤ò½çÈ֤˰ÜÆ°¤·¤Æ¤¤¤¯¡¢¤È¤¤¤¦½èÍý¤¬¼ÂÁõ½ÐÍè¤Þ¤¹¡£
¤è¤Ã¤Æ¡¢·ÐÏ©¤Ë±è¤Ã¤Æ°ÜÆ°¤¹¤ë½èÍý¤Ï¤³¤Î DOPath ¥á¥½¥Ã¥É¤ò¼ÂÁõ¤¹¤ì¤Ð¼Â¸½¤Ç¤­¤Þ¤¹¡£


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


¡¡Å¨¥­¥ã¥é¤ÎÀ©¸æ¤ò¹Ô¤¦¤¿¤á¤Ë¡¢¿·¤·¤¯¥¹¥¯¥ê¥×¥È¤òºîÀ®¤·¤ÆÀ©¸æ¤µ¤»¤Þ¤¹¡£

¡¡º£²ó¤Ï¤Þ¤º¡¢Àè¤Û¤ÉºîÀ®¤·¤¿ PathTranSet ¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤Î PathData ¥¹¥¯¥ê¥×¥ÈÆâ¤ËÀßÄꤷ¤¿·ÐÏ©¤Ë±è¤Ã¤Æ°ÜÆ°¤ò¹Ô¤¦¤¿¤á¤Îµ¡Ç½¤ò¼ÂÁõ¤·¤Þ¤¹¡£


EnemyController.cs


¡¡¥¹¥¯¥ê¥×¥È¤òºîÀ®¤·¤¿¤é¥»¡¼¥Ö¤ò¤·¤Þ¤¹¡£


£³¡¥¡ã¥á¥½¥Ã¥É¡¦¥Á¥§¡¼¥ó¡ä


¡¡DOTween ¤Îµ¡Ç½¤Ë¤Ä¤¤¤ÆÀâÌÀ¤¹¤ëÁ°¤Ë¡¢¥á¥½¥Ã¥É¡¦¥Á¥§¡¼¥ó¤Ë¤Ä¤¤¤ÆÀâÌÀ¤·¤Þ¤¹¡£

¡¡// ³ÆÃÏÅÀ¤Ë¸þ¤±¤Æ°ÜÆ°
  transform.DOPath(paths, 1000 / moveSpeed).SetEase(Ease.Linear);

¡¡º£²ó¤Î½èÍý¤Ï¡¢Ê£¿ô¤Î¥á¥½¥Ã¥É¤ò¤Ä¤Ê¤²¤Æ£±¹Ô¤Çµ­½Ò¤·¤Æ¤¤¤ë½èÍý¤Ë¤Ê¤ê¤Þ¤¹¡£
¥Ô¥ê¥ª¥É¤Î°ÌÃ֤ޤǤ¬£±¤Ä¤Î½èÍý¤Ë¤Ê¤Ã¤Æ¤ª¤ê¡¢¹ç·×¤Ç£²¤Ä¤Î DOTween ¤Î¥á¥½¥Ã¥É¤¬¼Â¹Ô¤µ¤ì¤Æ¤¤¤Þ¤¹¡£

¡¡¤³¤Î¤è¤¦¤Ë¥Ô¥ê¥ª¥É¤òÍøÍѤ·¤Æ¡¢Á°¤Î¥á¥½¥Ã¥É¤Î½èÍý¤Ë³¤±¤Æ¼¡¤Î¥á¥½¥Ã¥É¤Î½èÍý¤ò½ñ¤¯¤È¡¢Á°¤Î¥á¥½¥Ã¥É¤Î½èÍý¤ò¼õ¤±¤Æ¼¡¤Î¥á¥½¥Ã¥É¤Î½èÍý¤¬¼Â¹Ô¤µ¤ì¤Þ¤¹¡£
¤³¤Îµ­½ÒÊýË¡¤ò¥á¥½¥Ã¥É¡¦¥Á¥§¡¼¥ó¤È¤¤¤¤¤Þ¤¹¡£¤³¤ì¤Ï C# ¤¬»ý¤Äµ¡Ç½¤Ç¤¹¡£DOTween ¤À¤±¤Î¤â¤Î¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡£

¡¡º£²ó¤Î¾ì¹ç¡¢transform ¤ËÂФ·¤Æ DOPath ¥á¥½¥Ã¥É¤¬ºÇ½é¤Ë¼Â¹Ô¤µ¤ì¤Æ¡¢¤½¤Î½èÍý·ë²Ì¤ò¼õ¤±¤Æ SetEase ¥á¥½¥Ã¥É¼Â¹Ô¤µ¤ì¤ë¤è¤¦¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£

¡¡¥×¥í¥°¥é¥à¤Ï¾å¤«¤é²¼¤Ë¼Â¹Ô¤µ¤ì¤Æ¤¤¤­¤Þ¤¹¤¬¡¢£±¹Ô¤Ë½ñ¤«¤ì¤¿½èÍý¤Î¾ì¹ç¤Ï¡¢¼êÁ°(º¸Â¦)¤è¤ê¡¢¥Ô¥ê¥ª¥Éñ°Ì¤Ç¶èÀڤäƼ¹Ԥµ¤ì¤ë¤³¤È¤Ë¤Ê¤ê¤Þ¤¹¡£
¤³¤ì¤Ï¾¤Î½èÍý¤ÈƱÍͤǤ¹¡£¤·¤Ã¤«¤ê¤È½èÍý¤Î½çÈÖ¤òÄɤ¨¤ë¤è¤¦¤Ë¡¢Æɤ߲ò¤¤¤Æ¤ß¤Þ¤·¤ç¤¦¡£


£´¡¥¡ãDOTween¤ÎÊä´Öµ¡Ç½¤È¼ÂÁõÎã­¡¡¡¡¼DOPath ¥á¥½¥Ã¥É¡¢SetEase ¥á¥½¥Ã¥É¡¼¡ä


¡¡¿·¤·¤¯¼ÂÁõ¤ò¹Ô¤Ã¤¿ DOTween ¤Îµ¡Ç½¤Ë¤Ä¤¤¤Æ¡¢³Æ¥á¥½¥Ã¥É¤ò½çÈÖ¤ËÀâÌÀ¤·¤Þ¤¹¡£

¡¡// ³ÆÃÏÅÀ¤Ë¸þ¤±¤Æ°ÜÆ°
  transform.DOPath(paths, 1000 / moveSpeed).SetEase(Ease.Linear);


£±¡¥DOPath (Vector3[] path, float duration)

¡¡DOPath ¥á¥½¥Ã¥É¤Ï¡¢Â¾¤Î°ÜÆ°·Ï¤Î DOTween ¤Î¥á¥½¥Ã¥É¤ÈƱ¤¸¤Ç¡¢À©¸æ¤·¤¿¤¤¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤Î Transform ¥³¥ó¥Ý¡¼¥Í¥ó¥È¤ËÂФ·¤ÆÌ¿Îá¤ò½Ð¤¹¥á¥½¥Ã¥É¤Ç¤¹¡£
Transform ¥³¥ó¥Ý¡¼¥Í¥ó¥È¡¢¤¢¤ë¤¤¤Ï RectTransform ¥³¥ó¥Ý¡¼¥Í¥ó¥È¤Î Transform ¤Î Position ÃͤËÂФ·¤ÆÊä´Ö½èÍý¤ò¹Ô¤Ã¤Æ¡¢¥¢¥Ë¥á¤·¤Æ¤¤¤ë¤è¤¦¤Ë±é½Ð¤·¤Æ¤¯¤ì¤ëµ¡Ç½¤Ç¤¹¡£

¡¡¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤Î°ÌÃÖ¤ò¸½ºßÃͤ«¤éÂè1°ú¿ô¤Ç»ØÄꤷ¤¿ÃͤòÌÜŪÃϤȤ·¤ÆÂè2°ú¿ô¤Ë»ØÄꤷ¤¿»þ´Ö¤ò¤«¤±¤Æ°ÜÆ°¤ò¹Ô¤¤¤Þ¤¹¡£
Âè1°ú¿ô¤Ï Vector3 ·¿¤ÎÇÛÎó¤ò»ØÄꤷ¤Þ¤¹¡£¤³¤ì¤¬°ÜÆ°¤ò¹Ô¤¤ºÝ¤Ë·Ðͳ¤¹¤ëºÂɸ¤Ë¤Ê¤ê¤Þ¤¹¡£¤Ä¤Þ¤ê¡¢¤³¤ÎÇÛÎó¤ÎÃæ¤ÎºÂɸ¤ò½çÈÖ¤ËÌÜŪÃϤȤ·¤Æ¡¢¼¡¡¹¤Ë°ÜÆ°¤ò·«¤êÊÖ¤·¤Æ¤¤¤¯½èÍý¤Ë¤Ê¤ê¤Þ¤¹¡£
¤³¤Îµ¡Ç½¤ò»È¤¦¤³¤È¤Ë¤è¤ê¡¢·ÐÏ©ÍѤΥ²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤Î Transform ¥³¥ó¥Ý¡¼¥Í¥ó¥È¤Î Position ¤ò½çÈÖ¤ËÌÜŪÃϤȤ·¤Æ°ÜÆ°¤·¤Æ¤¤¤¯¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£
¤Ê¤ª¡¢2D ¤Î¾ì¹ç¤Ç¤¢¤Ã¤Æ¤â·ÐÏ©°ÜÆ°»þ¤Ë¤Ï Position ¤Î Z ¼´¤Î¾ðÊ󤬹Í褵¤ì¤Æ·×»»¤µ¤ì¤Þ¤¹¡£

¡¡¸«¤¿Ìܾå¤Ï X ¼´¤È Y ¼´¤Ç¤Î°ÜÆ°¤Ë¸«¤¨¤Þ¤¹¤¬¡¢¥×¥í¥°¥é¥à¤ÎÆâÉô¤Ç¤Ï Z ¼´¤â»²¾È¤µ¤ì¤Æ°ÜÆ°¤ò¹Ô¤Ã¤Æ¤¤¤Þ¤¹(DOPath ¥á¥½¥Ã¥É¤ÎÂè1°ú¿ô¤Î¥Ç¡¼¥¿·¿¤Ï Vector3 ·¿¤ÎÇÛÎó¤Ç¤¹)¡£
¤½¤Î¤¿¤á¡¢°ÜÆ°ÍѤΥ²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È(º£²ó¤Ç¤¢¤ì¤ÐŨ¥­¥ã¥é)¤Î Z ¼´¡¢¤ª¤è¤Ó·ÐÏ©ÍѤΥ²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤Î Z ¼´¤¬¤¹¤Ù¤ÆƱ¤¸ÃÍ (0) ¤Ë¤Ê¤Ã¤Æ¤¤¤ë¤«¤ò³Îǧ¤·¤Æ¤ª¤­¤Þ¤·¤ç¤¦¡£
²¾¤Ë¤¤¤º¤ì¤«¤Î Z ¼´¤Ë 0 °Ê³°¤ÎÃͤ¬ÂåÆþ¤µ¤ì¤Æ¤¤¤ë¤È¤½¤ÎÃÏÅÀ¤Ø°ÜÆ°¤¹¤ëºÝ¤Î®ÅÙ¤¬¶Ëü¤ËÃÙ¤¯¤Ê¤Ã¤¿¤êÁ᤯¤Ê¤Ã¤¿¤ê¤¹¤ëÉÔ¶ñ¹ç¤¬È¯À¸¤·¤Þ¤¹¡£
¤³¤ì¤Ï Z ¼´¤Îʬ¤ò·×»»¤·¡¢±ü¹Ô¤ò²ÃÌ£¤·¤Æ°ÜÆ°¤ò¹Ô¤¦¤¿¤á¤Ç¤¹(¤¿¤À¤·²èÌ̾å¤Ç¤Î¥°¥é¥Õ¥£¥Ã¥¯¤ÎÊѲ½¤Ï¤Ê¤¯¡¢°Üư®Å٤ΤßÉÔ¶ñ¹ç¤¬È¯À¸¤¹¤ë¤¿¤á¡¢Z ¼´¤ËÌäÂ꤬¤¢¤ë¤³¤È¤Ëµ¤¤Å¤­¤Ë¤¯¤¤¤Ç¤¹¡£)

¡¡°ÜÆ°¤¹¤ë¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤È°ÜÆ°·ÐÏ©¤Î¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤Î Z ¼´¤Ï¤¹¤Ù¤Æ 0 ¤È¤·¡¢°ÜÆ°»þ¤Î·×»»Ãͤˤϴޤޤì¤Ê¤¤¤è¤¦¤ËÃí°Õ¤·¤ÆÀßÄꤷ¤Þ¤·¤ç¤¦¡£

¡¡Âè2°ú¿ô¤Ï 1000 / moveSpeed ¤Ç¤¹¤Î¤Ç¡¢¤³¤Î·×»»·ë²Ì¤ÎÃͤλþ´Ö¤ò¤«¤±¤Æ¡¢¤¹¤Ù¤Æ¤ÎÌÜŪÃϤòÄ̲ᤷ¤Æ¡¢¥´¡¼¥ëÃÏÅÀ(ËɱҵòÅÀ)¤ËÃ夯¤Þ¤Ç¤Î»þ´Ö¤Ë¤Ê¤ê¤Þ¤¹¡£
£±¤Ä¤ÎÃÏÅÀ¤Ë°ÜÆ°¤¹¤ë¤Þ¤Ç¤Î»þ´Ö¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¤Î¤Ç¡¢´Ö°ã¤¨¤Ê¤¤¤è¤¦¤Ë¤·¤Æ¤¯¤À¤µ¤¤¡£

¡¡DOPath ¥á¥½¥Ã¥É¤Ë¤Ï¾¤Ë¤âÊØÍø¤Ê»È¤¤Êý¤¬¤¢¤ê¤Þ¤¹¡£Î㤨¤Ð¡¢¥Ù¥¸¥§¶ÊÀþ¤òºîÀ®¤·¤Æ°ÜÆ°¤ò¹Ô¤¤¤¿¤¤¾ì¹ç¤ä¡¢
Ʊ¤¸ÈϰϤò¼þ²ó°ÜÆ°¤µ¤»¤¿¤¤¾ì¹ç¤Ë¤âÂбþ¤Ç¤­¤Þ¤¹¤Î¤Ç³Ø½¬¤·¤Æ¤ª¤¯¤È¤¤¤¤¤Ç¤·¤ç¤¦¡£


»²¹Í¥µ¥¤¥È
Qiita @BEATnonanka ÍÍ
DOTween´°Á´¤ËÍý²ò¤¹¤ë¤½¤Î4 DOPathÊÔ
https://qiita.com/BEATnonanka/items/50cacac803f88f...


£²¡¥SetEase (EaseType easeType)

¡¡SetEase ¥á¥½¥Ã¥É¤Ï¾¤Î DOTween ¤Î¥á¥½¥Ã¥É¤ËÉտ魯¤ë½èÍý¤Ç¤¹¡£¤³¤Î¤è¤¦¤Ë DOTween ¤Ç¤Ï DOTween ¤Î¥á¥½¥Ã¥ÉƱ»Î¤ò£±¤Ä¤Î½èÍý¤Î²ô¤È¤·¤Æ³¤±¤Æ½èÍý¤ò¹Ô¤¦¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£
½èÍý¤ò³¤±¤ë¾ì¹ç¤Ë¤Ï¡¢Á°¤Î¥á¥½¥Ã¥É¤Î¸å¤Ë¥Ô¥ê¥ª¥É(¥É¥Ã¥È)¤ò½ñ¤¯¤³¤È¤Ç¡¢¼¡¤Î¥á¥½¥Ã¥É¤ò½ñ¤¯¤³¤È¤¬²Äǽ¤Ç¤¹¡£(ºÇ½é¤ËÀâÌÀ¤·¤¿¡¢¥á¥½¥Ã¥É¡¦¥Á¥§¡¼¥ó¤Îµ­½ÒÊýË¡¤Ç¤¹)

¡¡SetEase ¥á¥½¥Ã¥É¤Ç¤Ï Ease ¤È¤¤¤¦¥¢¥Ë¥á¡¼¥·¥ç¥ó¤µ¤»¤ëºÝ¤Î¥Ñ¥¿¡¼¥ó¤òÊѹ¹¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£Ease ¤Ï enum ¤ÇÀßÄꤵ¤ì¤Æ¤ª¤ê¡¢Ease.¥¿¥¤¥× ¤Î½ñ¼°¤Çµ­½Ò¤·¤Þ¤¹¡£
Èó¾ï¤Ë¿¤¯¤Î¼ïÎब¤¢¤ê¤Þ¤¹¡£º£²ó¤Ï Ease.Linear ¤ò»ÈÍѤ·¤Æ¤¤¤Þ¤¹¡£

¡¡º£²ó¤Ï¡¢DOPath ¥á¥½¥Ã¥É¤¬¼Â¹Ô¤µ¤ì¤Æ¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤Î Position ¤¬Êѹ¹¤µ¤ì¤Æ¤¤¤ë½èÍý¤ò¼Â¹Ô¤·¤Æ¤¤¤ëÉôʬ¤Ë¡¢¤³¤Î SetEase ¥á¥½¥Ã¥É¤¬¼Â¹Ô¤µ¤ì¤Þ¤¹¤Î¤Ç
°ÌÃÖ¾ðÊó¤òÊѹ¹¤¹¤ëºÝ¤ÎÊä´Ö½èÍý¤ËÂФ·¤Æ¡¢¤É¤Î¤è¤¦¤Ê¥¿¥¤¥×¤Î¥¢¥Ë¥á¡¼¥·¥ç¥ó¤Î¥Ñ¥¿¡¼¥ó¤òÀßÄꤷ¤Æ°ÜÆ°¤ò¹Ô¤ï¤»¤ë¤«¤ò»ØÄꤷ¤Æ¤¤¤Þ¤¹¡£

¡¡Position ¤òÊѹ¹¤¹¤ëºÝ¤Ë Linear ¤ò»ØÄꤹ¤ë¤È¡¢ºÇ½é¤Î°ÌÃÖ¤«¤éÌÜɸ¤È¤Ê¤ë°ÌÃ֤ޤǤΰÜư®ÅÙ¤òÅù®¤Ë»ØÄꤹ¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£
¤½¤Î¤¿¤á¡¢½é®¤ÇÁ᤯¤Ê¤Ã¤¿¤ê¡¢½ªÎ»´ÖºÝ¤ËÃÙ¤¯¤Ê¤Ã¤¿¤ê¡¢¤È¤¤¤Ã¤¿¤è¤¦¤ÊÊä´Ö½èÍý¤Ç¤Ï¤Ê¤¯¤Ê¤ê¡¢ºÇ½é¤«¤é¥´¡¼¥ëÃÏÅÀ¤ËÅþÃ夹¤ë¤Þ¤ÇÅù®¤ÇºÂɸ¤ÎÊѹ¹¡¢¤Ä¤Þ¤ê°ÜÆ°¤ò¹Ô¤¤¤Þ¤¹¡£

»²¹Í¥µ¥¤¥È
¥²¡¼¥àUI¥Í¥Ã¥È ÍÍ
DOTween¤Î¥¤¡¼¥¸¥ó¥°°ìÍ÷¤òÀ¤³¦°ì¾Ü¤·¤¯&ʬ¤«¤ê¤ä¤¹¤¯ÀâÌÀ¤¹¤ë
https://game-ui.net/?p=835
¡¡
¡¡°Ê¾å¤¬º£²ó¼ÂÁõ¤·¤Æ¤¤¤ë¡¢DOTween¤Î½èÍý¤Ë¤Ê¤ê¤Þ¤¹¡£¤·¤Ã¤«¤ê¤ÈÆɤ߲ò¤¤¤Æ¤¤¤Ã¤Æ»È¤¤Êý¤ò³Ð¤¨¤Æ¤¯¤À¤µ¤¤¡£


£µ¡¥Enemy ¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤Ë EnemyController ¥¹¥¯¥ê¥×¥È¤ò¥¢¥¿¥Ã¥Á¤·¡¢ÀßÄê¤ò¹Ô¤¦


¡¡¥Ò¥¨¥é¥ë¥­¡¼¤Ë¤¢¤ë Enemy ¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤Ë EnemyControler ¥¹¥¯¥ê¥×¥È¤ò¥É¥é¥Ã¥°¥¢¥ó¥É¥É¥í¥Ã¥×¤·¤Æ¥¢¥¿¥Ã¥Á¤·¤Þ¤¹¡£
¥¢¥¿¥Ã¥Á¤·¤¿¤éɬ¤º¡¢¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤òÁªÂò¤·¤Æ¥¤¥ó¥¹¥Ú¥¯¥¿¡¼¤ò³Îǧ¤·¤Æ¡¢Àµ¾ï¤Ë¥¢¥¿¥Ã¥Á¤µ¤ì¤Æ¤¤¤ë¤«¤òÌÜ»ë¤Ç¥Á¥§¥Ã¥¯¤·¤Þ¤¹¡£

¡¡EnemyController ¥¹¥¯¥ê¥×¥È¤Ë¤Ï¥¤¥ó¥¹¥Ú¥¯¥¿¡¼¤è¤ê¥¢¥µ¥¤¥ó¤¹¤ë¾ðÊ󤬣²¤Äɽ¼¨¤µ¤ì¤Æ¤¤¤Þ¤¹¤Î¤Ç¡¢¤³¤Á¤é¤òÀßÄꤷ¤Þ¤¹¡£

¡¡PathData ÊÑ¿ô¤Ë¤Ï¡¢¥Ò¥¨¥é¥ë¥­¡¼¤Ë¤¢¤ë PathTranSet ¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤ò¥É¥é¥Ã¥°¥¢¥ó¥É¥É¥í¥Ã¥×¤·¤Æ¥¢¥µ¥¤¥ó¤·¤Þ¤¹¡£
¼«Æ°Åª¤Ë PathData ¥¹¥¯¥ê¥×¥È¤Î¾ðÊó¤¬ÅÐÏ¿¤µ¤ì¤Þ¤¹¡£¤³¤³¤ÇŨ¥­¥ã¥é¤Î°ÜÆ°¤¹¤ë·ÐÏ©¤ò»²¾È¤¹¤ëÀßÄê¤ò¤·¤Æ¤¤¤Þ¤¹¡£

¡¡MoveSpeed ÊÑ¿ô¤Ë¤Ï¡¢Å¨¥­¥ã¥é¤Î°Üư®ÅÙ¤ÎÃͤˤʤê¤Þ¤¹¤Î¤Ç¡¢Ç¤°Õ¤ÎÃͤòÀßÄꤷ¤Þ¤¹¡£
ºÇ½é¤Ï 30 Á°¸å¤ËÀßÄꤷ¤Æ¤ª¤¤¤Æ¡¢Ä´À°¤ò¤·¤Æ¤¤¤¯¤È¤¤¤¤¤Ç¤·¤ç¤¦¡£¹â¤¯¤Ê¤ë¤Û¤É¡¢°Üư®Å٤⮤¯¤Ê¤ê¤Þ¤¹¡£


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



¡¡ÀßÄ꤬½ªÎ»¤·¤¿¤é¡¢Enemy ¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤Î¥¤¥ó¥¹¥Ú¥¯¥¿¡¼¤Î Layer ÀßÄê¤Î²¼¤Ë¤¢¤ë Overrides ¥Ü¥¿¥ó¤ò²¡¤·¤Æ¤¯¤À¤µ¤¤¡£
Àè¤Û¤É¥×¥ì¥Õ¥¡¥Ö¤Ë¤·¤¿ºÝ¤Èº£¤Î¾õÂ֤ǤϺ¹Ê¬¤¬¤¢¤ê¤Þ¤¹¤Î¤Ç¡¢¤½¤ì¤ò¾å½ñ¤­¤¹¤ë¤«³Îǧ¤¬½Ð¤Þ¤¹¡£
Apply All ¤òÁªÂò¤¹¤ë¤³¤È¤Ç¡¢¸½ºß¤Î¥×¥ì¥Õ¥¡¥Ö¤Î¾ðÊó¤¬ Prefabs ¥Õ¥©¥ë¥À¤Ë¤¢¤ë Enemy ¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤Ë¤âÈ¿±Ç¤µ¤ì¤Þ¤¹¡£

¡¡¥×¥ì¥Õ¥¡¥Ö¸µ¤Î¾ðÊó¤ò¸½ºß¤Î¥×¥ì¥Õ¥¡¥Ö¤Î¾ðÊó¤Ë¹¹¿·¤·¤¿¤¤¾ì¹ç¤Ë¤Ï¡¢¤³¤Î Overrides µ¡Ç½¤òÍøÍѤ·¤Æ¤¯¤À¤µ¤¤¡£


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


¡¡Enemy ¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤Î°ÌÃÖ¤ò¡¢StartTran ¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤Î°ÌÃ֤˰ÜÆ°¤·¤Æ¤¯¤À¤µ¤¤¡£
¤½¤Î¾å¤Ç¡¢¥²¡¼¥à¤ò¼Â¹Ô¤·¤Þ¤¹¡£Enemy ¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤¬ StartTran ¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤Î°ÌÃÖ¤«¤é
³Æ PathTran ¤Î°ÌÃ֤ؽçÈ֤˰ÜÆ°¤·¡¢ºÇ¸å¤Ë GoalTran ¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤Î°ÌÃÖ¤ÇÄä»ß¤¹¤ì¤ÐÀ©¸æÀ®¸ù¤Ç¤¹¡£


¡ã¼ÂÁõÆ°²è­¡¡¡StartTran ¤«¤é°ÜÆ°¤ò³«»Ï¡ä
Æ°²è¥Õ¥¡¥¤¥ë¤Ø¤Î¥ê¥ó¥¯


¡ã¼ÂÁõÆ°²è­¢¡¡³Æ PathTran ¤ò½çÈ֤˷Ðͳ¤·¤Æ°ÜÆ°¡ä
Æ°²è¥Õ¥¡¥¤¥ë¤Ø¤Î¥ê¥ó¥¯


¡ã¼ÂÁõÆ°²è­£¡¡°Üư®ÅÙ¤òÁ᤯¤·¤Æ¤ß¤ë¡ä
Æ°²è¥Õ¥¡¥¤¥ë¤Ø¤Î¥ê¥ó¥¯


£·¡¥EnemyController ¥¹¥¯¥ê¥×¥È¤ò½¤Àµ¤¹¤ë


¡¡Start ¥á¥½¥Ã¥ÉÆâ¤Ç¼Â¹Ô¤·¤Æ¤¤¤ë²¼µ­¤Î½èÍý¤Ë¤Ä¤¤¤Æ¡¢£±¹Ô¤Ë¤Þ¤È¤á¤Æ½èÍý¤òµ­½Ò¤¹¤ëÊýË¡¤ò³Ø½¬¤·¤Þ¤¹¡£

  // °ÜÆ°¤¹¤ëÃÏÅÀ¤ò¼èÆÀ¤¹¤ë¤¿¤á¤ÎÇÛÎó¤ÎÀë¸À¤È½é´ü²½
  Vector3[] paths = new Vector3[pathData.pathTranArray.Length];

¡¡// °ÜÆ°¤¹¤ë°ÌÃÖ¾ðÊó¤ò½çÈÖ¤ËÇÛÎó¤Ë¼èÆÀ
  for (int i = 0; i < pathData.pathTranArray.Length; i++) {
      paths[i] = pathData.pathTranArray[i].position;
  }

¡¡¤³¤Á¤é¤Î½èÍý¤Ï¡¢°ÜÆ°¤¹¤ëÃÏÅÀ¤Î¾ðÊó¤ò¼èÆÀ¤¹¤ë¤¿¤á¤ËÇÛÎó¤ÎÀë¸À¤È½é´ü²½¤ò¹Ô¤¤¡¢
¤½¤Î¸å¡¢for ʸ¤òÍøÍѤ·¤Æ¡¢PathData ¥¯¥é¥¹¤Ë¤¢¤ë pathTranArray ÊÑ¿ô¤Î¾ðÊó¤ò½çÈ֤˼èÆÀ¤·¤Æ¤¤¤Þ¤¹¡£

¡¡Linq ¤È¤¤¤¦µ¡Ç½¤òÍøÍѤ¹¤ë¤³¤È¤Ç¡¢¤³¤Î½èÍý¤ò£±¹Ô¤Ë¤Þ¤È¤á¤Æµ­½Ò¤¹¤ë¤³¤È¤¬²Äǽ¤Ë¤Ê¤ê¤Þ¤¹¡£

¡¡¤¹¤Ç¤Ë¼ÂÁõ¤·¤Æ¤¤¤ë½èÍý¤Ë¤Ä¤¤¤Æ¡¢¥²¡¼¥à¾å¤Î½èÍý(¸«¤¿ÌܤεóÆ°)¤ÏÊѹ¹¤Ê¤¯¡¢ÆâÉôŪ¤Ê½èÍý¤òÀººº¤·¤Æ½¤Àµ¤¹¤ë¤³¤È¤ò¥ê¥Õ¥¡¥¯¥¿¥ê¥ó¥°¤È¤¤¤¤¤Þ¤¹¡£
¤³¤Î¹Í¤¨Êý¤ÏÈó¾ï¤Ë½ÅÍפˤʤê¤Þ¤¹¡£½èÍý¤ò¼ÂÁõ¤·¤Æ½ª¤ï¤ê¡¢¤Ç¤Ï¤Ê¤¯¡¢¾ï¤Ë¤É¤Î¤è¤¦¤¹¤ì¤Ð¤è¤ê´Ê·é¤Ë¡¢¤ï¤«¤ê¤ä¤¹¤¤½èÍý¤Ë¤Ê¤ë¤«¤ò¹Í¤¨¤Æ¤¤¤¯¤³¤È¤¬¥¹¥­¥ë¥¢¥Ã¥×¤Ë¤Ä¤Ê¤¬¤ê¤Þ¤¹¡£


EnemyController.cs


¡¡¥¹¥¯¥ê¥×¥È¤ò½¤Àµ¤·¤¿¤é¡¢¥»¡¼¥Ö¤ò¹Ô¤¤¤Þ¤¹¡£


£¸¡¥¡ãLinq ¤Îµ¡Ç½¤Î¼ÂÁõÎã­¡¡¡¡ÁSelect ¥á¥½¥Ã¥É¡¢ToArray ¥á¥½¥Ã¥É¡Á¡ä


¡¡Linq¡Ê¥ê¥ó¥¯¡Ë¤È¤Ï¡¢¥³¥ì¥¯¥·¥ç¥ó(Dictionary ¤ä List ¤Ê¤É)¤ÎÍ×ÁǤòÁàºî¤·¤Æ¡¢¸¡º÷¤·¤¿¤ê½¸·×¤¹¤ë½èÍý¤ò´Ê·é¤Ëµ­½Ò¤¹¤ë¤³¤È¤¬¤Ç¤­¤ë¥é¥¤¥Ö¥é¥ê(Ê£¿ô¤Îµ¡Ç½¤ò¤Þ¤È¤á¤¿¤â¤Î)¤Ç¤¹¡£

¡¡Linq¤ò»ÈÍѤ¹¤ë¤¿¤á¤Ë¤Ïusing ¤ÎÀë¸À¤¬É¬Íפˤʤê¤Þ¤¹¡£º£²óºîÀ®¤·¤¿¥á¥½¥Ã¥ÉÆâ¤ËÅо줷¤Æ¤¤¤ë½èÍý¤Ç¤¹¤Î¤Ç¡¢Éü½¬¤·¤ÆÆɤ߲ò¤±¤ë¤è¤¦¤Ë¤·¤Æ¤¤¤­¤Þ¤·¤ç¤¦¡£

using System.Linq;



¡¡Linq¤òµ­½Ò¤¹¤ëºÝ¤Ë¤Ï¥é¥à¥À¼°¤Îµ­½Ò¤òÍѤ¤¤Þ¤¹¡£¥é¥à¥À¼°¤Ë¤Ä¤¤¤Æ¤Ï¤³¤Á¤é¤ò¤´³Îǧ¤¯¤À¤µ¤¤¡£
SamuraiBlogÍÍ
¡ÚC#ÆþÌç¡ÛLINQ¤Î»È¤¤ÊýÁí¤Þ¤È¤á(Select¡¢Where¡¢GroupBy¤Ê¤É)
https://www.sejuku.net/blog/56519

¡¡Linq¤Ë¤Ï¿¤¯¤Îµ¡Ç½¤¬¤¢¤ê¤Þ¤¹¤¬º£²óÍøÍѤ·¤Æ¤¤¤ëµ¡Ç½¤Ë¤Ä¤¤¤Æ¤Þ¤È¤á¤Æ¤ª¤­¤Þ¤¹¡£
¤½¤Î¤Û¤«¤Îµ¡Ç½¤Ë¤Ä¤¤¤Æ¤Ïµ­»ö¤¬¤¿¤¯¤µ¤ó¤¢¤ê¤Þ¤¹¤¬¡¢¤³¤Á¤é¤Î¥µ¥¤¥È¤â»²¹Í¤Ë¤Ê¤ê¤Þ¤¹¡£
ÃÏÊ¿Àþ¤Ë¹Ô¤¯ÍÍ
LINQ¤Î³ÈÄ¥¥á¥½¥Ã¥É°ìÍ÷¤È¡¢¤Û¤ÜÁ´Éô¤Î¥µ¥ó¥×¥ë¤òºî¤Ã¤Æ¤ß¤Þ¤·¤¿¡£
https://yujisoftware.hatenablog.com/entry/20111031...


£±¡¥Select ¥á¥½¥Ã¥É

¡¡¼Í±Æ½èÍý¤È¸Æ¤Ð¤ì¤ëµ¡Ç½¤Ç¤¹¡£¼Í±Æ¤È¤Ï¥Ç¡¼¥¿¥Ù¡¼¥¹ÍѤÎÀìÌçÍѸì¤Ç¡¢¥Æ¡¼¥Ö¥ë(¼Â¥Ç¡¼¥¿)¤«¤éÆÃÄê¤ÎÎó¤Î¥Ç¡¼¥¿¤Î¤ß¤ò¼è¤ê½Ð¤¹¤³¤È¤ò¸À¤¤¤Þ¤¹¡£

¡¡Select ¥á¥½¥Ã¥É¤Ç¤Ï°ú¿ô¤Ë¤·¤¿¾ò·ï¤ò¸µ¤Ë¡¢¾È¹ç¤Ç¤­¤¿¥Ç¡¼¥¿¤Î¤ß¤ò¼è¤ê½Ð¤¹Áàºî¤ò¹Ô¤¤¤Þ¤¹¡£
¤³¤Î¥á¥½¥Ã¥É¤ÎÌá¤êÃÍ¤Ï IEnumerable<TResult> ¤Ç¤¢¤ê¡¢¤½¤Î¾ðÊó¤ò¼èÆÀ¤·¤ÆÍøÍѤ·¤¿¤¤¾ì¹ç¤Ë¤Ï¡¢¥á¥½¥Ã¥É¥Á¥§¡¼¥ó¤òÍøÍѤ·¤Æ¡¢ToList ¥á¥½¥Ã¥É¤ä ToArray ¥á¥½¥Ã¥É¤òÍøÍѤ·¤Æ°·¤¨¤ë¾õÂ֤ˤ·¤Þ¤¹¡£
¤³¤ì¤Ï Where ¥á¥½¥Ã¥É¤ÈƱ¤¸½èÍý¤Î¼ê½ç¤Ë¤Ê¤ê¤Þ¤¹¡£

  // Ʊ¤¸´õ¾¯Å٤ιç·×Ãͤò»»½Ð¤·¤Æ¡¢¥é¥ó¥À¥à¤ÊÃͤòÃê½Ð
  int randomRewardValue = UnityEngine.Random.Range(0, rewardDatas.Select(x => x.rarityRate).ToArray().Sum());

¡¡¤³¤Á¤é¤Î¼ÂÁõÎã¤Ç¤Ï¡¢Range ¥á¥½¥Ã¥É¤ÎÂè2°ú¿ô¤ÎÉôʬ¤Ç Select ¥á¥½¥Ã¥É¤òÍøÍѤ·¤Æ¤¤¤Þ¤¹¡£
rewardDatas.Select(x => x.rarityRate).ToArray().Sum() ¤³¤³¤Þ¤Ç¤¬¡¢Âè2°ú¿ô¤Î½èÍý¤Ç¤¹¡£

¡¡rewardDatas ÇÛÎóÊÑ¿ô¤Î³ÆÍ×ÁǤè¤ê¡¢rarityRate ÊÑ¿ô¤Î¾ðÊó¤ò¤½¤ì¤¾¤ì¼è¤ê½Ð¤·¤Þ¤¹¡£
rewardDatas.Select(x => x.rarityRate) ¤³¤³¤Þ¤Ç¤¬ Select ¥á¥½¥Ã¥É¤Ç¤¹¡£


»²¹Í¥µ¥¤¥È
MicroSoft
Enumerable.Select ¥á¥½¥Ã¥É
https://docs.microsoft.com/ja-jp/dotnet/api/system...
.NET Column ÍÍ
¡ÚLINQ¤ÎSelect¥á¥½¥Ã¥É¤Î½ñ¤­Êý3Áª¡ÃLINQ¤Ë¤Ä¤¤¤Æ¤Ê¤É¤ò¾Ò²ð
https://www.fenet.jp/dotnet/column/language/1454/
Qiita @t_takahari ÍÍ
LINQ¤Î¤½¤ÎForEach¡¢¼Â¤ÏSelect¤Ç½ñ¤­´¹¤¨¤é¤ì¤ë¤«¤â
https://qiita.com/t_takahari/items/6dc72f48b1ebdfe...


£²¡¥ToArray ¥á¥½¥Ã¥É

¡¡IEnumerable<T> ¤«¤éÇÛÎó¤òºîÀ®¤·¤Þ¤¹¡£

¡¡IEnumerable<T> ¤Ï Linq ¤Î½èÍý¤ò¼Â¹Ô¤·¤¿ºÝ¤ÎÌá¤êÃͤξðÊó¤Ç¤¹¡£Î㤨¤Ð¡¢¥Õ¥£¥ë¥¿¥ê¥ó¥°¤·¤Æ»»½Ð¤µ¤ì¤¿·ë²Ì¤ò ÇÛÎ󷿤ˤ·¤ÆÍøÍѤ·¤¿¤¤¾ì¹ç¤ËÍøÍѤ·¤Þ¤¹¡£

  // Ʊ¤¸´õ¾¯Å٤ιç·×Ãͤò»»½Ð¤·¤Æ¡¢¥é¥ó¥À¥à¤ÊÃͤòÃê½Ð
  int randomRewardValue = UnityEngine.Random.Range(0, rewardDatas.Select(x => x.rarityRate).ToArray().Sum());
¡¡
¡¡Select ¥á¥½¥Ã¥É¤Ë¤è¤Ã¤ÆÃê½Ð¤µ¤ì¤¿¾ðÊó¤òÇÛÎó¤Ë¤·¤Æ¤¤¤Þ¤¹¡£¤½¤·¤Æ¤½¤Î¸å¤Ë Sum ¥á¥½¥Ã¥É¤ò¼Â¹Ô¤¹¤ë¤³¤È¤Ë¤è¤ê¡¢
ÇÛÎó¤ÎÍ×ÁǤò¤¹¤Ù¤Æ¹ç·×¤·¤¿Ãͤò»»½Ð¤·¡¢¤½¤ì¤ò Range ¥á¥½¥Ã¥É¤ÎºÇÂçÃͤȤ·¤ÆÍøÍѤ·¤Æ¤¤¤Þ¤¹¡£

  // Ʊ¤¸´õ¾¯Å٤ιç·×Ãͤò»»½Ð¤·¤Æ¡¢¥é¥ó¥À¥à¤ÊÃͤòÃê½Ð
  int randomRewardValue = UnityEngine.Random.Range(0, [ ÇÛÎó¤Ç¤¢¤ë rewardDatas ¥¯¥é¥¹¤Î»ý¤Ä³Æ rarityRate ÊÑ¿ô¤ÎÃͤΤ߼è¤ê½Ð¤·¤Æ¤½¤ì¤òÇÛÎó¤Ë¤·¡¢¤½¤ÎÇÛÎó¤ÎÍ×ÁǤÎÃͤιç·×ÃÍ ]);


»²¹Í¥µ¥¤¥È
MicroSoft
Enumerable.ToArray<TSource>(IEnumerable<TSource>) ¥á¥½¥Ã¥É
https://docs.microsoft.com/ja-jp/dotnet/api/system...
Qiita @Marimoiro ÍÍ
LINQ¥Á¡¼¥È¥·¡¼¥ÈŪ¤Ê¤â¤Î
https://qiita.com/Marimoiro/items/0e119b47d65bf138...
Qiita @mounntainn ÍÍ
LINQ¤Ë¤Ä¤¤¤Æ¤ÎÈ÷˺Ͽ
https://qiita.com/mounntainn/items/e8b8f94a15ec4fe...


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


¡¡¥ê¥Õ¥¡¥¯¥¿¥ê¥ó¥°¤ò¹Ô¤Ã¤Æ¤¤¤ë¤Î¤Ç¡¢¥²¡¼¥à¾å¤Î½èÍý¤Ë¤ÏÊѲ½¤Ï¤¢¤ê¤Þ¤»¤ó¡£
¤½¤Î¤¿¤á¡¢¤¤¤Þ¤Þ¤Ç¤ÈƱ¤¸¤è¤¦¤ËŨ¤¬·ÐÏ©¤Ë±è¤Ã¤Æ°ÜÆ°¤ò¹Ô¤Ã¤Æ¤¤¤ì¤ÐÀ©¸æÀ®¸ù¤Ç¤¹¡£

¡¡¿·¤·¤¤½èÍý¤ò³Ø½¬¤¹¤ëºÝ¤Ë¤Ï¡¢¤½¤Î½èÍý¤¬ËÜÍè¤É¤Î¤è¤¦¤Ê½èÍý¤Ë¤Ê¤Ã¤Æ¤¤¤ë¤«¤òÇÄ°®¤·¤Æ¤¤¤ë¤³¤È¤¬Á°Äó¤Ë¤Ê¤ê¤Þ¤¹¡£
¤½¤¦¤¤¤Ã¤¿¤³¤È¤â´Þ¤á¤Æ¡¢¼«Ê¬¤Î½ñ¤¤¤Æ¤¤¤ë½èÍý¤òÍý²ò¤·¡¢¤½¤ì¤ò´Ê·é¤Ë¤Þ¤È¤á¤Æ¤¤¤¯¤è¤¦¤Ë¤¹¤ë¤È¡¢¿·¤·¤¤½èÍý¤ÎÍý²ò¤â¿¼¤Þ¤ê¤Þ¤¹¡£

¡¡ºÇ½é¤«¤é¿·¤·¤¤½èÍý¤ò½ñ¤¤¤Æ¤â¤è¤¤¤Ç¤¹¤¬¡¢¤Þ¤º¤Ï´ðËÜŪ¤Êµ­½Ò¤ò¤·¤Æ½èÍý¤ÎÆâÍƤòÍý²ò¤·¤¿¾å¤Ç½ñ¤­Âؤ¨¤Æ¤¤¤¯¤è¤¦¤Ë¤·¤Æ¤ß¤Æ¤¯¤À¤µ¤¤¡£
¤½¤¦¤¹¤ë¤³¤È¤Ë¤è¤Ã¤Æ¥³¡¼¥Ç¥£¥ó¥°¤Î¥¹¥­¥ë¤¬¾å㤷¤Þ¤¹¡£



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

¡¡¼¡¤Ï¡¡¼ê½ç£¹¡¡¡ÝŨ¥­¥ã¥é¤Î°ÜÆ°Êý¸þ¤È°ÜÆ°¥¢¥Ë¥á¤ÎƱ´ü½èÍý¤Î¼ÂÁõ¡Ý¡¡¤Ç¤¹¡£

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


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

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

Menu



´ðÁÃ

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

private



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

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