¡¡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 ¤È¤·¤Æ½èÍý¤ò»ß¤á¤ë¤è¤¦¤Ë¤·¤¿Êý¤¬¤è¤¤¤Î¤«
ξÊý¤Î»ëÅÀ¤ò»ý¤Ã¤Æºî¤Ã¤Æ¤¤¤¯¤è¤¦¤Ë¿´¤¬¤±¤Þ¤·¤ç¤¦¡£
¡¡
¡¡¥³¡¼¥Ç¥£¥ó¥°¥¹¥¥ë¤ò¾å㤵¤»¤ë¥³¥Ä¤Î£±¤Ä¤Ç¤¹¡£
¤³¤Î¤è¤¦¤Ê»ëÅÀ¤ò¼ê¤ËÆþ¤ì¤é¤ì¤Ê¤¤¤È¡¢¤¤¤Ä¤Þ¤Ç¤âƱ¤¸·Á¼°¤Îʬ´ô½èÍý¤·¤«ºî¤ì¤Þ¤»¤ó¡£
¡¡¥¹¥¥ë¥¢¥Ã¥×¤Ë·Ò¤¬¤ë¤è¤¦¤Ê³Ø½¬¤ò¿´³Ý¤±¤Þ¤·¤ç¤¦¡£