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

¡¡2D ¥²¡¼¥à¤Ë¤ª¤±¤ë¡¢NavMeshAgent ¤Ë¤è¤ë¥Ù¡¼¥·¥Ã¥¯¤ÊÄÉÀ×µ¡Ç½¤Î¼ÂÁõÎã¤Ç¤¹¡£
¥¿¥¤¥ë¥Þ¥Ã¥×¾å¤Ç¤âµ¡Ç½¤·¤Þ¤¹¡£

¡¡NavMeshAgent¥³¥ó¥Ý¡¼¥Í¥ó¥È¤ò»ÈÍѤ¹¤ë¤³¤È¤Ç¡¢NavMesh¾å¤Ç¤Î¸úΨŪ¤Ê°Üư¤¬¼Â¸½¤µ¤ì¡¢¥ê¥¢¥ë¥¿¥¤¥à¤Ç¤ÎÂоݤÎÄÉÀפ¬²Äǽ¤Ë¤Ê¤ê¤Þ¤¹¡£



¥µ¥ó¥×¥ë¥³¡¼¥É


¡¡NavMeshAgent ¥³¥ó¥Ý¡¼¥Í¥ó¥È¤¬¥¢¥¿¥Ã¥Á¤µ¤ì¤Æ¤¤¤ë¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤Ë¡¢¤³¤Î¥¹¥¯¥ê¥×¥È¤ò¥¢¥¿¥Ã¥Á¤·¤ÆÍøÍѤ·¤Þ¤¹¡£
º£²ó¤ÏºÎÍѤ·¤Æ¤¤¤Þ¤»¤ó¤¬¡¢[RequireComponent(typeof(T))] °À­¤òÉÕÍ¿¤¹¤ë¤³¤È¤Ç°ÂÁ´¤ËÍøÍѤǤ­¤Þ¤¹¡£

¡¡¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤ò¥¤¥ó¥¹¥¿¥ó¥¹¤·¤Æ NavMeshAgent ¤Ë¤è¤ë°Üư¤ò¹Ô¤¤¤¿¤¤¾ì¹ç¡¢
»öÁ°¤Ë NavMeshAgent ¥³¥ó¥Ý¡¼¥Í¥ó¥È¤ò¥ª¥Õ¤Ë¤·¤Æ¤ª¤¯¤«¡¢¾ðÊó¤ò¼èÆÀ¤·¤Æ¤«¤é·ÐÏ©¤òÀßÄꤹ¤ë¤è¤¦¤Ë¤·¤Þ¤¹¡£

¡¡¥¤¥ó¥¹¥¿¥ó¥¹¤µ¤ì¤¿Ä¾¸å¤Ï Bake ¤µ¤ì¤Æ¤¤¤ë·ÐÏ©¾ðÊó¤òÃΤé¤Ê¤¤¤¿¤á¡¢·ÐÏ©¸¡º÷¤Ë¼ºÇÔ¤·¤Æ¥¨¥é¡¼¤Ë¤Ê¤ë¤¿¤á¤Ç¤¹¡£


Chaser.cs

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



²òÀâ


¡¡public Transform target ¤Ç»ØÄꤵ¤ì¤¿¥×¥ì¥¤¥ä¡¼¥ª¥Ö¥¸¥§¥¯¥È¡Ê¤Þ¤¿¤Ï¾¤ÎÂоݡˤòÄÉÀפ¹¤ë¤¿¤á¤ÎTransform¤òÊÝ»ý¤¹¤ëÊÑ¿ô¤òÀë¸À¤·¤Þ¤¹¡£

¡¡private NavMeshAgent agent ¤ÇNavMeshAgent¥³¥ó¥Ý¡¼¥Í¥ó¥È¤òÊÝ»ý¤¹¤ëÊÑ¿ô¤òÀë¸À¤·¤Þ¤¹¡£NavMeshAgent¤Ï¡¢NavMesh¾å¤Ç¤Î°Üư¤ò´ÉÍý¤¹¤ë¥³¥ó¥Ý¡¼¥Í¥ó¥È¤Ç¤¹¡£

¡¡Start ¥á¥½¥Ã¥ÉÆâ¤Ç¡¢NavMeshAgent¥³¥ó¥Ý¡¼¥Í¥ó¥È¤ò¼èÆÀ¤·¡¢°Üư®ÅÙ¤òÀßÄꤷ¤Þ¤¹¡£
¤â¤·NavMeshAgent¥³¥ó¥Ý¡¼¥Í¥ó¥È¤¬¼èÆÀ¤Ç¤­¤Ê¤«¤Ã¤¿¾ì¹ç¡¢¥¨¥é¡¼¥á¥Ã¥»¡¼¥¸¤òɽ¼¨¤·¤Þ¤¹¡£

¡¡Update ¥á¥½¥Ã¥ÉÆâ¤Ç¡¢°Ê²¼¤Î½èÍý¤ò¹Ô¤¤¤Þ¤¹¡£

¡¡¡¡¡¡a. NavMeshAgent¤¬Â¸ºß¤·¤Ê¤¤¤«¡¢Âоݡʥץ쥤¥ä¡¼¥ª¥Ö¥¸¥§¥¯¥È¡Ë¤¬ÀßÄꤵ¤ì¤Æ¤¤¤Ê¤¤¾ì¹ç¡¢½èÍý¤òÃæÃǤ·¤Þ¤¹¡£¤³¤ì¤Ï¥¨¥é¡¼¤òËɤ°¤¿¤á¤Î¥Á¥§¥Ã¥¯¤Ç¤¹¡£

¡¡¡¡¡¡b. ¥ª¥Ö¥¸¥§¥¯¥È¤ÈÂоݤޤǤε÷Î¥¤ò·×»»¤·¡¢¥Ç¥Ð¥Ã¥°¥í¥°¤Çɽ¼¨¤·¤Þ¤¹¡£¤³¤Îµ÷Î¥¤ò¤â¤È¤Ë¡¢Âоݤ¬»ë³¦¤ËÆþ¤Ã¤¿¤«¤É¤¦¤«¤òȽÄꤷ¤Þ¤¹¡£

¡¡¡¡¡¡c. sightRange ÊÑ¿ô¤Ï»ë³¦¤òɽ¸½¤·¤Þ¤¹¡£
¡¡¡¡¡¡¡¡¤³¤ÎÆâ¤ËÂоݤ¬¤¤¤ë¾ì¹ç¡Êµ÷Î¥¤¬ sightRange °Ê²¼¤Î¾ì¹ç¡Ë¡¢NavMeshAgent¤Î SetDestination ¥á¥½¥Ã¥É¤ò»ÈÍѤ·¤ÆÂоݤΰÌÃÖ¤ò°ÜưÌÜɸÃÏÅÀ¤ËÀßÄꤷ¤Þ¤¹¡£
¡¡¡¡¡¡¡¡¤³¤ì¤Ë¤è¤ê¡¢¥ª¥Ö¥¸¥§¥¯¥È¤ÏÂоݤòÄÉÀפ·¤Þ¤¹¡£

¡¡¡¡¡¡d. sightRange ¤è¤ê¤âÂоݤ¬±ó¤¯¤Ë¤¤¤ë¾ì¹ç¡¢NavMeshAgent¤Î ResetPath ¥á¥½¥Ã¥É¤ò»ÈÍѤ·¤Æ°Üư¤òÄä»ß¤·¤Þ¤¹¡£¤Ä¤Þ¤ê¡¢Âоݤ¬»ë³¦³°¤Ë½Ð¤¿¤ÈȽÃǤ·¤Æ¡¢ÄÉÀפòÄä»ß¤·¤Þ¤¹¡£



¡¡£³£Ä¤Î¾ì¹ç¤ÈÂ礭¤¯°Û¤Ê¤ë¤Î¤Ï¡¢agent.updateRotation ¤È agent.updateUpAxis ¤ò¥ª¥Õ¤ËÀßÄꤷ¡¢3DÍѤβóžÀßÄê¤ò̵¸ú¤Ë¤·¤Æ¤¤¤ëÉôʬ¤Ç¤¹¡£
¤Þ¤¿¹â¤µ¤Î¾ðÊó¤âÉÔÍפǤ¢¤ë¤¿¤á¡¢Y ¼´¤Ï¾ï¤Ë¥×¥ì¥¤¥ä¡¼¤Î¾ðÊó¤òÍøÍѤ·¡¢¾å²¼º¸±¦Êý¸þ¤ÎÂоݤޤǤε÷Î¥¤ò·×»»¤·¤Æ¤¤¤Þ¤¹¡£
(ʬ¤«¤ê¤Ë¤¯¤¤¤Ç¤¹¤¬¡¢NavMeshAgent ¤Ï£³£Ä¶õ´Ö¤òǧ¼±¤·¤Æ¤¤¤ë¤¿¤á¡¢¾å²¼º¸±¦¤Î¾ðÊó¤Ï X ¼´¤È Z ¼´¤Ë¤Ê¤ê¤Þ¤¹¡£)

¡¡¤³¤ì¤Ë¤è¤ê¡¢£²£Ä¶õ´Ö¤ÇNavMesh¤òÀµ¤·¤¯»ÈÍѤǤ­¤Þ¤¹¡£


½¤Àµ°Æ¡¡¡¼ÌÜɸ¤ò¼º¤Ã¤¿¾ì¹ç¤Ë¡¢½é´üÃÏÅÀ¤Þ¤ÇÌá¤Ã¤Æ¤¤¤¯µ¡Ç½¤ÎÄɲá¼


¡¡ÌÜɸ¤ò¼º¤Ã¤¿¾ì¹ç¤Ë¡¢½é´üÃÏÅÀ¤Þ¤ÇÌá¤Ã¤Æ¤¤¤¯µ¡Ç½¤òÄɲ䷤Ƥߤޤ·¤ç¤¦¡£


Chaser.cs

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



¡ã¥Ý¥¤¥ó¥È¡ä


¡¡Update ¥á¥½¥Ã¥ÉÆâ¤Î½èÍý¤¬¡¢Å¬ÀڤʰÌÃÖ¤Ç return ¤µ¤ì¡¢ÉÔÍפʽèÍý¤¬Æ°¤«¤Ê¤¤¤è¤¦¤ËÀ©¸æ¤µ¤ì¤Æ¤¤¤Þ¤¹¡£
¤³¤Î¤è¤¦¤Ê·Á¤Ç return ¤ò¾å¼ê¤¯³èÍѤ¹¤ë¤È¡¢if ʸ¤Ë¤è¤ë¥Í¥¹¥È¤òÀõ¤¯½ÐÍè¤Þ¤¹¡£

¡¡²¾¤Ë¡¢¤â¤·¤âÄÉÀ×Ãæ¤À¤Ã¤¿¤é¡¢¤È¤¤¤¦ if ʸ¤Ç½èÍý¤ò½ñ¤¯·Á¤ò¸«¤Æ¤ß¤Þ¤·¤ç¤¦¡£


     private void Update()
    {
        // NavMeshAgent ¤¬¼èÆÀ¤Ç¤­¤Ê¤¤¡¢¤¢¤ë¤¤¤Ï°ÜưÀè¤ÎÂоݤ¬ÀßÄꤵ¤ì¤Æ¤¤¤Ê¤¤¾ì¹ç
        if (!agent || !target)
        {
            // ½èÍý¤ò¹Ô¤ï¤Ê¤¤(¥¨¥é¡¼¤¬½Ð¤Æ¤·¤Þ¤¦¤¿¤á)
            return;
        }

        // ¤³¤Î¥ª¥Ö¥¸¥§¥¯¥È¤È°ÜưÀè¤ÎÂоݤޤǤε÷Î¥¤ò·×»»
        Vector3 targetPosition = new Vector3(target.position.x, transform.position.y, target.position.z);
        float distanceToPlayer = Vector3.Distance(transform.position, targetPosition);

        // ¤É¤Î°ÌÎ¥¤ì¤Æ¤¤¤ë¤«¤òɽ¼¨
        Debug.Log("ÂоݤޤǤε÷Î¥ : " + distanceToPlayer);

        if (isChasing)
        {
            // Âоݤ¬»ë³¦¤ËÆþ¤Ã¤¿¾ì¹ç(µ÷Î¥¤¬¶á¤¤¾ì¹ç)
            if (distanceToPlayer <= sightRange)
            {
                // ÂоݤΰÌÃÖ¤ò°ÜưÌÜɸÃÏÅÀ¤ËÀßÄê
                // Update ¥á¥½¥Ã¥ÉÆâ¤Ç¼Â¹Ô¤·¤Æ¤¤¤ë¤Î¤Ç¡¢Âоݤ¬°Üư¤¹¤ë¤È¡¢ÌÜɸÃÏÅÀ¤â¹¹¿·¤µ¤ì¤ë¤Î¤ÇÄÉÀפ¹¤ë
                agent.SetDestination(targetPosition);
            }
            else
            {
                // Âоݤ¬»ë³¦³°¤Î¾ì¹ç(µ÷Î¥¤¬±ó¤¤¾ì¹ç)¡¢¥¹¥¿¡¼¥ÈÃÏÅÀ¤ËÌá¤ë
                agent.SetDestination(originalDestination);
            }
        }
        else
        {
            // ÄÉÀ×Ãæ¤Ç¤Ï¤Ê¤¤¾ì¹ç¡¢°Üư¤òÄä»ß¤¹¤ë
            agent.ResetPath();
        }
    }

¡¡ÄÉÀפ¹¤ë¤«¡¢Èݤ«¤òȽÃǤ¹¤ëÁ°¤Ë·×»»½èÍý¤ò¤·¤Æ¤¤¤¿¤ê¡¢if ʸÆâ¤Ë¤µ¤é¤Ë if ʸ¤òºî¤Ã¤ÆÄÉÀ×»þ¤Î½èÍý¤ò½ñ¤¤¤Æ¤¤¤ë¤Î¤Ç¡¢
if ʸ¤Î¥Í¥¹¥È¤¬¿¼¤¯¡¢¤Þ¤¿ÈϰϤ¬¹­¤¯ÆÉ¤ß¤Ë¤¯¤¯¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£

¡¡Ê¬´ô½èÍý¤òºîÀ®¤¹¤ë¾ì¹ç¤Ë¤Ï¡¢true ¤Ç¤¢¤Ã¤¿¤È¤­¤Ë½èÍý¤òư¤«¤·¤¿Êý¤¬¤è¤¤¤Î¤«¡¢false ¤È¤·¤Æ½èÍý¤ò»ß¤á¤ë¤è¤¦¤Ë¤·¤¿Êý¤¬¤è¤¤¤Î¤«
ξÊý¤Î»ëÅÀ¤ò»ý¤Ã¤Æºî¤Ã¤Æ¤¤¤¯¤è¤¦¤Ë¿´¤¬¤±¤Þ¤·¤ç¤¦¡£
¡¡
¡¡¥³¡¼¥Ç¥£¥ó¥°¥¹¥­¥ë¤ò¾å㤵¤»¤ë¥³¥Ä¤Î£±¤Ä¤Ç¤¹¡£
¤³¤Î¤è¤¦¤Ê»ëÅÀ¤ò¼ê¤ËÆþ¤ì¤é¤ì¤Ê¤¤¤È¡¢¤¤¤Ä¤Þ¤Ç¤âƱ¤¸·Á¼°¤Îʬ´ô½èÍý¤·¤«ºî¤ì¤Ê¤¤¤¿¤á¡¢¥¹¥­¥ë¥¢¥Ã¥×¤Ë·Ò¤¬¤ê¤Þ¤»¤ó¡£

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


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

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

Menu



´ðÁÃ

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

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

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

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

3D¥À¥¤¥Ó¥ó¥°¥¢¥¯¥·¥ç¥ó(ȯŸÊÔ)

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

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

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

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

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

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

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

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

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

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

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

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

private



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

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