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

¡¡°ú¤­Â³¤­¡¢¾ã³²Êª¤Ë¤Ä¤¤¤ÆÀ߷פȼÂÁõ¤ò¹Ô¤¤¤Þ¤¹¡£

¡¡¿Í·¿¤Î¾ã³²Êª¤Ï¡¢×Ñ×Ë¥¿¥¤¥×¡¢ÄÉÀ×¥¿¥¤¥×¡¢¤½¤ì¤é¤òÁȤ߹ç¤ï¤»¤¿¤â¤Î¤ò¸¡Æ¤¤·¤Þ¤¹¡£
¤¤¤º¤ì¤Î¥¿¥¤¥×¤â»ë³¦¤Î³µÇ°¤ò»ý¤Á¡¢»ë³¦Æâ¤Ë¥×¥ì¥¤¥ä¡¼¤¬¿¯Æþ¤·¤¿¾ì¹ç¤ËÈ¿±þ¤·¤Þ¤¹¡£

¡¡º£²ó¤ÎÀ߷פǤϾ㳲ʪ¤Î¥Ù¡¼¥¹¤È¤Ê¤ë¥¹¥¯¥ê¥×¥È¤Ë¤Ä¤¤¤Æ³Ø½¬¤·¤Þ¤¹¡£
»ë³¦¤Ë¤Ä¤¤¤Æ¤Ï¡¢¼¡²ó°Ê¹ß¤Ç¼ÂÁõ¤ò¹Ô¤¤¤Þ¤¹¡£


¡ã¼ÂÁõÆ°²è¡ä
Æ°²è¥Õ¥¡¥¤¥ë¤Ø¤Î¥ê¥ó¥¯



¡ã¿·¤·¤¯³Ø½¬¤¹¤ëÆâÍÆ¡ä
¡¡¡¦¥¯¥é¥¹¤Î·Ñ¾µ
¡¡¡¦abstract(¥¢¥Ö¥¹¥È¥é¥¯¥È) ½¤¾þ»Ò¤Ë¤è¤ëÃê¾Ý¥¯¥é¥¹¤ÈÃê¾Ý¥á¥½¥Ã¥É¤ÎÀë¸À
¡¡¡¦virtual(¥Ð¡¼¥Á¥ã¥ë) ¥­¡¼¥ï¡¼¥É
¡¡¡¦override(¥ª¡¼¥Ð¡¼¥é¥¤¥É) ¥­¡¼¥ï¡¼¥É¡¡¥¯¥é¥¹¤Î·Ñ¾µ»þ¤ËÍøÍѤǤ­¤ë¡¢²¾ÁÛ(Ãê¾Ý)¥á¥½¥Ã¥É¤Î¥ª¡¼¥Ð¡¼¥é¥¤¥É½èÍý¡¡¡¼Â¿ÂÖÀ­(¥Ý¥ê¥â¡¼¥Õ¥£¥º¥à)¡¼
¡¡¡¦NavMeshAgent ¤ËÍÑ°Õ¤µ¤ì¤Æ¤¤¤ëÊÑ¿ô¤È¥á¥½¥Ã¥É­¡



Àß·×


¡¡º£²ó¤Î¼ê½ç¤Ç¤Ï¡¢¥¯¥é¥¹¤Î·Ñ¾µ¤È¿ÂÖÀ­¤È¤¤¤¦¡¢¥ª¥Ö¥¸¥§¥¯¥È»Ø¸þ¥×¥í¥°¥é¥ß¥ó¥°¤Ë¤ª¤±¤ë½ÅÍפʳµÇ°(¸¶Â§)¤òÍøÍѤ·¤¿À߷פγؽ¬¤ò¹Ô¤¤¤Þ¤¹¡£
¾ã³²Êª¤È¤¤¤¦¼ïÎà¤Î¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤Ç¤¢¤ì¤Ð¡¢¤¹¤Ù¤Æ¶¦Ä̤¹¤ë½èÍý¤Ë¤è¤Ã¤ÆÆ°ºî¤¹¤ë¤è¤¦¤ËÀ߷פ·¡¢¼ÂÁõ¤ò¹Ô¤¤¤Þ¤¹¡£

¡¡¤³¤Î¤è¤¦¤Ê¾ì¹ç¡¢¾ã³²Êª¤È¤·¤Æ»ý¤¿¤»¤¿¤¤Ìò³ä¤òÌÀ³Î²½¤·¡¢¤½¤ì¤ò£±¤Ä¤Î¥¯¥é¥¹¤Ë¤Þ¤È¤á¤Þ¤¹¡£
Î㤨¤Ð¡¢¥×¥ì¥¤¥ä¡¼¤È¾ã³²Êª¤È¤ÎÀÜ¿¨¤ÎȽÄê¡¢¾ã³²Êª¤ËÀÜ¿¨¤·¤¿¾ì¹ç¤Î½èÍý¡¢¤Ê¤É¤Ç¤¹¡£

¡¡¤³¤ì¤Ï¡¢¤¤¤º¤ì¤Î¾ã³²Êª¤Î¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤Î¥¯¥é¥¹¤Ç¤âƱÍͤνèÍý¤òµ­½Ò¤¹¤ë¤³¤È¤¬ÁÛÄꤵ¤ì¤Þ¤¹¤Î¤Ç¡¢
¶¦Ä̤¹¤ë½èÍý¤ò¤Þ¤È¤á¤Æ£±¤Ä¤Î¥¯¥é¥¹(¿Æ¥¯¥é¥¹)¤Ëµ­½Ò¤·¡¢¤½¤Î¿Æ¥¯¥é¥¹¤ò·Ñ¾µ¤¹¤ë·Á¤Ç¡¢½èÍý¤ò¶¦Ä̲½¤·¤Æ¼ÂÁõ¤¹¤ë¤è¤¦¤Ë¤·¤Æ¤¤¤­¤Þ¤¹¡£

¡¡¥¤¥á¡¼¥¸¤·¤ä¤¹¤¤¤è¤¦¤Ë¡¢¤³¤ì¤«¤éºîÀ®¤¹¤ë¥¯¥é¥¹¤Î´Ø·¸¤ò¿Þ¤Ë¼¨¤·¤Þ¤¹¡£

¡ã¥¯¥é¥¹¿Þ¡ä



»²¹Í¥µ¥¤¥È
MicroSoft
·Ñ¾µ
https://docs.microsoft.com/ja-jp/dotnet/csharp/fun...



¡¡ºÇ¤âºÇ¾åÃʤˤ¢¤ë¥¯¥é¥¹¤Ï ObstacleBase ¥¯¥é¥¹¤Ç¤¹¡£°ìÈ֤Υ¹¥¿¡¼¥ÈÃÏÅÀ¤Ë¤Ê¤ë¥¯¥é¥¹¤ò¿Æ¥¯¥é¥¹¡¢¤¢¤ë¤¤¤Ï´ð´´¥¯¥é¥¹(¥¹¡¼¥Ñ¡¼¥¯¥é¥¹)¤È¸Æ¤Ó¤Þ¤¹¡£
¤³¤Î¥¯¥é¥¹¤Ï MonoBehaviour ¥¯¥é¥¹¤ò·Ñ¾µ¤·¤Æ¤¤¤Þ¤¹¡£

¡¡ObstacleBase ¥¯¥é¥¹¤Ï abstract ½¤¾þ»Ò¤òÍѤ¤¤¿Ãê¾Ý¥¯¥é¥¹¤È¤·¤ÆºîÀ®¤ò¤·¤Æ¤¤¤Þ¤¹¡£
Ãê¾Ý¥¯¥é¥¹¤Ï¡¢¤½¤ìñÂΤǤϥ¤¥ó¥¹¥¿¥ó¥¹¤¬ºîÀ®¤Ç¤­¤Ê¤¤¥¯¥é¥¹¤Ç¤¹¡£¤Ä¤Þ¤ê¡¢¤¤¤º¤ì¤«¤Î¥¯¥é¥¹¤Ë·Ñ¾µ¤µ¤»¤ëÁ°Äó¤ÇÀ߷פò¹Ô¤¦¥¯¥é¥¹¤Ë¤Ê¤ê¤Þ¤¹¡£

¡¡ObstacleBase ¥¯¥é¥¹¤Ç¤Ï¡¢¤¹¤Ù¤Æ¤Î¾ã³²Êª¤ËɬÍפÊÊÑ¿ô¤ä¥á¥½¥Ã¥É¤òºîÀ®¤·¡¢¾ã³²Êª¤È¤·¤Æ¤ÎÌò³ä¤ò¶¦Ä̲½¤µ¤»¤Þ¤¹¡£
¤½¤Î¤¿¤á¡¢¸Ä¡¹¤Î¾ã³²Êª¤ËÊÌÅÓÈ÷¤¨¤¿¤¤µ¡Ç½(ÊÑ¿ô¤ä¥á¥½¥Ã¥É)¤Ë¤Ä¤¤¤Æ¤Ï¡¢¤³¤Î ObstacleBase ¥¯¥é¥¹¤Ë¤ÏÄêµÁ¤·¤Þ¤»¤ó¡£

¡¡¶¦Ä̤¹¤ë½èÍý¤¬µ­½Ò¤µ¤ì¤¿ ObstacleBase ¥¯¥é¥¹¤ò¿Æ¥¯¥é¥¹¤È¤·¤Æ·Ñ¾µ¤¹¤ë¤³¤È¤Ç¡¢¸Ä¡¹¤Î¾ã³²ÊªÍѤΥ¯¥é¥¹¤ò»Ò¥¯¥é¥¹¤È¤·¤ÆºîÀ®¤·¤Þ¤¹¡£

¡¡À߷פȼÂÁõ¤Ë¤¢¤¿¤ê¡¢Á´ÂΤÎÀ߷פ¬´°Î»¤·¤¿¤é¡¢¤Þ¤º¤Ï·Ñ¾µ¸µ(¿Æ)¤È¤Ê¤ë ObstacleBase ¥¯¥é¥¹¤«¤é½çÈ֤˺îÀ®¤·¤Æ¤¤¤¯¤³¤È¤Ë¤Ê¤ê¤Þ¤¹¡£

¡¡ObstacleBase ¥¯¥é¥¹¤òºîÀ®¤·¤¿¤é¡¢¤½¤ì¤ò·Ñ¾µ¤µ¤»¤¿ MovingObstacle ¥¯¥é¥¹¤ò»Ò¥¯¥é¥¹¤È¤·¤ÆºîÀ®¤·¤Þ¤¹¡£
¼ÂºÝ¤Ë¤Ï¤³¤Î MovingObstacle ¥¯¥é¥¹¤¬¡¢¾ã³²Êª¤Î¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤Ë¥¢¥¿¥Ã¥Á¤¹¤ë¤¿¤á¤Î¥¯¥é¥¹¤Ë¤Ê¤ê¤Þ¤¹¡£


¾ã³²ÊªÍÑ¥¯¥é¥¹¤Î¿Æ¥¯¥é¥¹¤òÀ߷פ·¤Æ¼ÂÁõ¤¹¤ë


¡¡º£²ó¿Æ¤È¤Ê¤ë¥¯¥é¥¹¤Ï MonoBehaviour ¤ò·Ñ¾µ¤·¤¿¥¯¥é¥¹¤Ë¤Ê¤ê¤Þ¤¹¡£¤³¤ì¤¬¤¹¤Ù¤Æ¤Î¾ã³²Êª¤Î¿Æ¤È¤Ê¤ë¥¯¥é¥¹¤Ë¤Ê¤ê¤Þ¤¹¡£
¿Æ¥¯¥é¥¹¤ÏÄ̾ïÄ̤ꡢ¿·¤·¤¤C#¥¹¥¯¥ê¥×¥È¤òºîÀ®¤·¤Æ¤¤¤¯¼ê½ç¤Çºî¤Ã¤Æ¤¤¤­¤Þ¤¹¡£

¡¡»Ò¥¯¥é¥¹¤Ç¤Î¤ß¼ÂÁõ¤¬É¬ÍפʾðÊó¤È¡¢¿Æ¥¯¥é¥¹¤Ë¼ÂÁõ¤·¤Æ»Ò¥¯¥é¥¹Á´ÂΤǶ¦Ä̲½¤·¤ÆÍøÍѤ·¤¿¤¤¾ðÊó¤È¤¬¤¢¤ê¤Þ¤¹¤Î¤Ç
¤Þ¤º¤Ï¤½¤ÎÀÚ¤êʬ¤±¤ò¹Ô¤Ã¤Æ¡¢¶¦Ä̲½¤Ç¤­¤ë¤â¤Î¤Î¤ß¤ò¿Æ¥¯¥é¥¹¤ËÍÑ°Õ¤·¤Þ¤¹¡£

¡¡¡¦¾ã³²Êª¤Î½é´üÀßÄê
¡¡¡¦¥×¥ì¥¤¥ä¡¼¤È¾ã³²Êª¤È¤¬ÀÜ¿¨¤·¤¿ºÝ¤Î½èÍý

¡¡¤³¤ÎÊÕ¤ê¤Ï¡¢¶¦Ä̲½¤Ç¤­¤ë½èÍý¤Ë¤Ê¤ê¤Þ¤¹¡£

¡¡¤Ç¤¹¤¬¡¢

¡¡¡¦¾ã³²Êª¤Î¸ú²Ì¤òŬÍѤ¹¤ë
¡¡¡¦¥¨¥Õ¥§¥¯¥È¤òÀ¸À®¤¹¤ë

¡¡¤³¤Î£²¤Ä¤Ë¤Ä¤¤¤Æ¤Ï¡¢¤½¤ì¤¾¤ì¤Î¾ã³²Êª¤Ë¤è¤Ã¤ÆÆâÍƤ¬°Û¤Ê¤ë²ÄǽÀ­¤¬¹â¤¤¤¿¤á¡¢
¿Æ¥¯¥é¥¹¤Ë¶¦Ä̲½¤·¤Æ½èÍý¤òºî¤Ã¤¿¾å¤Ç¡¢»Ò¥¯¥é¥¹¤Ç¤½¤ì¤¾¤ì¤Î¾ã³²Êª¤ÎÆâÍƤ˱褦ÆâÍƤ˽¤Àµ¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£

¡¡¤³¤Î¤è¤¦¤ËÀÚ¤êʬ¤±¤¿½èÍý¤Î¼ÂÁõ¤¬²Äǽ¤Ë¤Ê¤ë¤³¤È¤¬¡¢¥¯¥é¥¹¤Î·Ñ¾µ¤Ë¤è¤ëÂ礭¤Ê¥á¥ê¥Ã¥È¤Ë¤Ê¤ê¤Þ¤¹¡£



¡¡¿Æ¥¯¥é¥¹¤Ëµ­½Ò¤¹¤ëÆâÍƤϡ¢Ä̾ï¤Î¥¯¥é¥¹¤ÈƱ¤¸¤è¤¦¤ËÊÑ¿ô¤ÎÀë¸À¤È¥á¥½¥Ã¥É¤ÎºîÀ®¤Ë¤Ê¤ê¤Þ¤¹¤¬¡¢µ­½Ò¤¹¤ë½ñ¼°¤¬¤¤¤¯¤Ä¤«ÊѤï¤ê¤Þ¤¹¡£

¡¡ÊÑ¿ô¤ä¥á¥½¥Ã¥É¤ÎÀë¸À¤Ë¤ª¤¤¤Æ private ½¤¾þ»Ò¤òÍøÍѤ¹¤ëÉôʬ¤Ë¤Ï¡¢Âå¤ï¤ê¤Ë protected ½¤¾þ»Ò¤ò»ÈÍѤ·¤Þ¤¹¡£
¤³¤ì¤Ï·Ñ¾µ¤·¤¿¥¯¥é¥¹´Ö¤Ç¤Î¤ß»ÈÍѤǤ­¤ë¤³¤È¤òµö²Ä¤¹¤ë½¤¾þ»Ò¤Ç¤¹¡£
³°Éô¤ÇÍøÍѤ·¤¿¤¤ÊÑ¿ô¤ä¥á¥½¥Ã¥É¤Î¾ì¹ç¤Ë¤Ï¡¢Ä̾ïÄ̤ê public ½¤¾þ»Ò¤ò»ÈÍѤ·¤Þ¤¹¡£

¡¡¤Þ¤¿¥á¥½¥Ã¥É¤Î¾ì¹ç¤Ë¤Ï¡¢Àë¸À»þ¤Ë virtual ¥­¡¼¥ï¡¼¥É¤òµ­½Ò¤·¤Þ¤¹¡£¤³¤¦¤¹¤ë¤³¤È¤Ç»Ò¥¯¥é¥¹¤¬¾å½ñ¤­²Äǽ¤Ê¡¢¿Æ¥¯¥é¥¹¤Î¥á¥½¥Ã¥É¤È¤·¤ÆÀ®Î©¤·¤Þ¤¹¡£

¡¡¿Æ¥¯¥é¥¹¤ÇÀßÄꤵ¤ì¤¿¥¢¥¯¥»¥¹½¤¾þ»Ò¤Î¾ðÊó¤Ï»Ò¥¯¥é¥¹¤Ç¤â°ú¤­·Ñ¤¬¤ì¤Þ¤¹¡£
Î㤨¤Ð¿Æ¥¯¥é¥¹¤Ç public float x ¤òºîÀ®¤·¤Æ¤¤¤ì¤Ð¡¢¤½¤ì¤Ï»Ò¥¯¥é¥¹¤Ç¤â public float x ¤È¤·¤Æ°·¤ï¤ì¤Þ¤¹¡£
¥á¥½¥Ã¥É¤âƱÍͤǤ¹¡£


ObstacleBase ¥¹¥¯¥ê¥×¥È¤òºîÀ®¤¹¤ë


¡¡¤½¤ì¤Ç¤Ï¼ÂºÝ¤Ë¿Æ¥¯¥é¥¹¤Ç¤¢¤ë ObstacleBase ¥¯¥é¥¹¤òºîÀ®¤·¤Þ¤¹¡£
º£²ó¤Ï abstract ½¤¾þ»Ò¤ò³èÍѤ·¤¿¡¢Ãê¾Ý¥¯¥é¥¹¤È¤¤¤¦·Á¼°¤ÇºîÀ®¤ò¹Ô¤Ã¤Æ¤¤¤Þ¤¹¡£


ObstacleBase.cs

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



¡ãabstract(¥¢¥Ö¥¹¥È¥é¥¯¥È) ½¤¾þ»Ò¤Ë¤è¤ëÃê¾Ý¥¯¥é¥¹¤ÈÃê¾Ý¥á¥½¥Ã¥É¤ÎÀë¸À¡ä


¡¡abstract ½¤¾þ»Ò¤ò¥¯¥é¥¹¤ÎÀë¸À¤ËÄɲ乤뤳¤È¤Ç¡¢Ãê¾Ý¥¯¥é¥¹¤òºîÀ®¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£

¡ãÃê¾Ý¥¯¥é¥¹¡ä
¡¡/// <summary>
¡¡/// ¾ã³²Êª¶¦ÄÌÍѤÎÃê¾Ý¥¯¥é¥¹
¡¡/// </summary>
¡¡public abstract class ObstacleBase : MonoBehaviour

¡¡Ãê¾Ý¥¯¥é¥¹¤È¤Ï¥¤¥ó¥¹¥¿¥ó¥¹¤ÎºîÀ®¤Ç¤­¤Ê¤¤(new ¤Ç¤­¤Ê¤¤)¥¯¥é¥¹¤Ç¤¹¡£·Ñ¾µ¤ò¹Ô¤¦Á°Äó¤ÇºîÀ®¤µ¤ì¤Æ¤¤¤ë¥¯¥é¥¹¤Î¤³¤È¤ò¸À¤¤¤Þ¤¹¡£
Ãê¾Ý¥¯¥é¥¹Æâ¤Ë¤ÏÃê¾Ý¥á¥½¥Ã¥É¤ò£±¤Ä°Ê¾åÀë¸À¤·¤Æ¤ª¤¯É¬Íפ¬¤¢¤ê¤Þ¤¹¡£Ä̾ï¤Î¥¯¥é¥¹¤ÈƱ¤¸¤è¤¦¤Ë¡¢private ½¤¾þ»Ò¤ä public ½¤¾þ»Ò¤ò»È¤Ã¤ÆÊÑ¿ô¤ä¥á¥½¥Ã¥É¤ò¼ÂÁõ¤¹¤ë¤³¤È¤â½ÐÍè¤Þ¤¹¡£



¡¡¥á¥½¥Ã¥É¤ÎÀë¸À¤Ë abstract ½¤¾þ»Ò¤òÄɲ乤뤳¤È¤ÇÃê¾Ý¥á¥½¥Ã¥É¤òºîÀ®¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£
¤³¤ì¤ÏÃæ¿È¤Î¤Ê¤¤(½èÍý¤Î¼ÂÂΤΤʤ¤)¥á¥½¥Ã¥É¤Ç¤¢¤ë¤¿¤á¡¢·Ñ¾µ¤·¤¿ÇÉÀ¸(»Ò)¥¯¥é¥¹Æâ¤Ë¤ª¤¤¤Æ¥ª¡¼¥Ð¡¼¥é¥¤¥É¤·¤ÆÍøÍѤ¹¤ë¤³¤È¤òÁ°Äó¤È¤·¤ÆºîÀ®¤µ¤ì¤Æ¤¤¤ë¥á¥½¥Ã¥É¤Ç¤¹¡£

¡ãÃê¾Ý¥á¥½¥Ã¥É¡ä
    /// <summary>
    /// ½é´üÀßÄê
    /// </summary>
    public abstract void SetUpObstacle();

¡¡Ãê¾Ý¥á¥½¥Ã¥É¤ÏÃê¾Ý¥¯¥é¥¹Æâ¤Ç¤·¤«ºîÀ®¤Ç¤­¤Þ¤»¤ó¡£
¤Þ¤¿Ãê¾Ý¥¯¥é¥¹¤ò·Ñ¾µ¤·¤Æ¤¤¤ë»Ò¥¯¥é¥¹¤Ç¤Ïɬ¤º¡¢¤¹¤Ù¤Æ¤ÎÃê¾Ý¥á¥½¥Ã¥É¤ò¥ª¡¼¥Ð¡¼¥é¥¤¥É¤·¤Æ¼ÂÁõ¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£
Ãê¾Ý¥á¥½¥Ã¥É¤Ë¤è¤ê¡¢¥á¥½¥Ã¥É¤Ë¤Ï¿ÂÖÀ­¤¬À¸¤Þ¤ì¤Þ¤¹¡£

¡¡¤³¤Îµ¡Ç½¤òÍѤ¤¤ë¤³¤È¤Ë¤è¤Ã¤Æ¡¢¼ÂÁõ¤Î»ÅÊý(¥á¥½¥Ã¥É¤Î¶¯À©)¤òÅý°ì¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£
¤Ä¤Þ¤ê¡¢ObstacleBase ¥¯¥é¥¹¤ò·Ñ¾µ¤·¤¿¥¯¥é¥¹¤Ç¤Ï¡¢É¬¤º¡¢Ãê¾Ý¥á¥½¥Ã¥É¤Ç¤¢¤ë SetUpObstacle ¥á¥½¥Ã¥É¤È TriggerObstacle ¥á¥½¥Ã¥É¤Î£²¤Ä¤ò¼ÂÁõ¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¤Î¤Ç¡¢
¤³¤Î½èÍý¤òÄ̤¸¤Æ¾ã³²Êª¤Î½é´üÀßÄê¤ò¹Ô¤¤¡¢¥×¥ì¥¤¥ä¡¼¤È¾ã³²Êª¤È¤¬ÀÜ¿¨¤·¤¿¸å¤Î½èÍý¤Ë¤Ä¤¤¤Æ¡¢¤¹¤Ù¤Æ¤Î¾ã³²Êª¤Ë¤ª¤¤¤ÆƱ¤¸½èÍý¤Îή¤ì¤ÇÀ©¸æ¤·¤Æ¤¤¤¯¤È¤¤¤¦À߷פǼÂÁõ¤Ç¤­¤Þ¤¹¡£

¡¡¼ÂÁõ¤·¤¿Ãê¾Ý¥á¥½¥Ã¥É¤Ç¤Ï¡¢»Ò¥¯¥é¥¹¤¬¤½¤ì¤¾¤ì¤Î½èÍý¤ò¼ÂÁõ(³ÎÄê)¤¹¤ë¤³¤È¤Ë¤Ê¤ê¤Þ¤¹¤Î¤Ç¡¢¥×¥í¥°¥é¥à¤Î¿ÂÖÀ­(¥Ý¥ê¥â¡¼¥Õ¥£¥º¥à)¤ò¼Â¸½½ÐÍè¤ë¤è¤¦¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£


¡ã»²¹Í¥µ¥¤¥È¡ä
MicroSoft
abstract
https://docs.microsoft.com/ja-jp/dotnet/csharp/lan...
++C++; // ̤³ÎǧÈô¹Ô C ÍÍ
Ãê¾Ý¥á¥½¥Ã¥É¡¢Ãê¾Ý¥¯¥é¥¹
https://ufcpp.net/study/csharp/oo_abstract.html
.NET Column ÍÍ
C#¤Îabstract class¤È¤Ï¡©¥¤¥ó¥¿¡¼¥Õ¥§¥¤¥¹¤Ë¤Ä¤¤¤Æ¤âÊ»¤»¤Æ²òÀ⡪
https://www.fenet.jp/dotnet/column/language/c-shar...
XR-HU3 ÍÍ
[Âè14²ó] Ãê¾Ý¥¯¥é¥¹¡Êabstract¡Ë¤Î»È¤¤Êý¤ò³Ø¤Ö¡ÃUnity¤Ç³Ø¤ÖC#ÆþÌç
https://xr-hub.com/archives/19842


¡ãvirtual(¥Ð¡¼¥Á¥ã¥ë) ¥­¡¼¥ï¡¼¥É¡ä


¡¡¿Æ¥¯¥é¥¹¤Ë¤ª¤¤¤ÆÄêµÁ¤·¤¿¥á¥½¥Ã¥É¤Ï¡¢virtual (²¾ÁÛ) ¥­¡¼¥ï¡¼¥É¤ò°ì½ï¤ËÀë¸À¤¹¤ë¤³¤È¤Ç¡¢ÇÉÀ¸(»Ò)¥¯¥é¥¹¤Ë¤ª¤¤¤Æ¥ª¡¼¥Ð¡¼¥é¥¤¥É½èÍý¤ò¤·¤ÆÍøÍѤ¹¤ë¤³¤È¤¬µö²Ä¤µ¤ì¤Þ¤¹¡£
¤³¤Îµ¡Ç½¤òÍ­¤·¤Æ¤¤¤ë¥á¥½¥Ã¥É¤ò²¾Áۥ᥽¥Ã¥É¤È¤¤¤¤¤Þ¤¹¡£Ãê¾Ý¥á¥½¥Ã¥É¤ÈƱ¤¸¤è¤¦¤Ë¡¢²¾Áۥ᥽¥Ã¥É¤Ë¤è¤ê¡¢¥á¥½¥Ã¥É¤Ë¤Ï¿ÂÖÀ­¤¬À¸¤Þ¤ì¤Þ¤¹¡£


¡ã¿Æ¥¯¥é¥¹¤Ë¤¢¤ë²¾Áۥ᥽¥Ã¥É¡ä
    /// <summary>
    /// ¥×¥ì¥¤¥ä¡¼¤È¾ã³²Êª¤È¤¬ÀÜ¿¨¤·¤¿»þ¤Î½èÍý
    /// </summary>
    public virtual void TriggerObstacle() {
        // TODO »Ä¤ê»þ´Ö¤ò¸º¤é¤·¤¿¤ê¡¢¥¹¥¿¡¼¥ÈÃÏÅÀ¤ØÌ᤹¤È¤¤¤Ã¤¿¥Ú¥Ê¥ë¥Æ¥£¤È¤Ê¤ë½èÍý¤ò¾ã³²Êª¤´¤È¤Ë½ñ¤¯
    }


¡¡virtual ¥­¡¼¥ï¡¼¥É¤Î¤Ê¤¤¥á¥½¥Ã¥É(Ä̾ï¤Î¥á¥½¥Ã¥É)¤Ï²¾Áۥ᥽¥Ã¥É¤Ç¤Ï¤Ê¤¤¤¿¤á¡¢½èÍý¤ò¥ª¡¼¥Ð¡¼¥é¥¤¥É¤¹¤ë¤³¤È¤Ï½ÐÍè¤Þ¤»¤ó¡£


¡ã³Æ¥­¡¼¥ï¡¼¥É¤Î´Ø·¸À­¡ä
¡¡virtual => override ¤Ç¤­¤ë

  abstract => override ¤Ç¤­¤ë


¡¡º£²ó¤Î ObstacleBase ¥¯¥é¥¹¤Ë¤Ï¡¢Ãê¾Ý¥á¥½¥Ã¥É¤È²¾Áۥ᥽¥Ã¥É¤ÎξÊý¤¬º®ºß¤·¤Æ¤¤¤Þ¤¹¡£
¤É¤Á¤é¤â»Ò¥¯¥é¥¹¤Ë¤ª¤¤¤Æ½èÍý¤ò¼ÂÁõ¤¹¤ë¤È¤¤¤¦Éôʬ¤Ç¤ÏƱ¤¸¤Ç¤¹¤¬¡¢Ãê¾Ý¥á¥½¥Ã¥É¤ÎÊý¤Ï¡¢»Ò¥¯¥é¥¹Æâ¤Ëɬ¤ºÄêµÁ¤·¤Æ¼ÂÁõ¤ò¹Ô¤¦É¬Íפ¬¤¢¤ê¤Þ¤¹¡£

¡¡SetUpObstacle ¥á¥½¥Ã¥É¤òÃê¾Ý(abstract)¥á¥½¥Ã¥É¤Ë¤·¤Æ¤¤¤ë¤Î¤Ï¡¢¾ã³²Êª¤Î½é´üÀßÄê¤Ë¤Ä¤¤¤Æ¤Ï¡¢É¬¤º»Ò¥¯¥é¥¹¤Ëµ­½Ò¤·¤Æ¤¯¤À¤µ¤¤¤È¶¯À©¤·¤¿¤¤¤¿¤á¤Ç¤¹¡£
TriggerObstacle ¥á¥½¥Ã¥É¤ò²¾ÁÛ(virtual)¥á¥½¥Ã¥É¤Ë¤·¤Æ¤¤¤ë¤Î¤Ï¡¢¥×¥ì¥¤¥ä¡¼¤È¾ã³²Êª¤È¤ÎÀÜ¿¨È½Äê¤Ë¤Ä¤¤¤Æ¤ÏÉÔÍפʻҥ¯¥é¥¹¤â¤¢¤ë²ÄǽÀ­¤¬¤¢¤ë¤¿¤á¡¢¶¯À©¤·¤Æ¼ÂÁõ¤·¤¿¤¯¤Ê¤¤¤¿¤á¤Ç¤¹¡£

¡¡
¡¡¼«Ê¬¤Ç½èÍý¤òºî¤ë¾ì¹ç¤Ë¤Ï¡¢¤Þ¤º¤Ï¤¹¤Ù¤Æ¤ò virtual ¥á¥½¥Ã¥É¤Ë¤·¤Æ¤ª¤¤¤Æ¡¢¤½¤Î¸å¡¢¤¹¤Ù¤Æ¤Î¾ã³²Êª¤ËÍøÍѤ·¤Æ¤¤¤ë¥á¥½¥Ã¥É¤¬¤¢¤ë¤Î¤Ç¤¢¤ì¤Ð¡¢
¤½¤Î¥á¥½¥Ã¥É¤ò abstract ¥á¥½¥Ã¥É¤ËÊѤ¨¤Æ¤¤¤¯¤è¤¦¤Ë¤·¤Æ¤ß¤Þ¤·¤ç¤¦¡£¥×¥í¥°¥é¥à¤Ë¤ª¤¤¤Æ¤Ï¡¢»î¤·¤Æ¤ß¤Æ¡¢¼«Ê¬¤ÇÂ賤·¤Æ¤ß¤ë¤³¤È¤¬¤È¤Æ¤â³Ø½¬¤Ë¤Ê¤ê¤Þ¤¹¡£

MicroSoft
virtual (C# ¥ê¥Õ¥¡¥ì¥ó¥¹)
https://docs.microsoft.com/ja-jp/dotnet/csharp/lan...


¿Æ¥¯¥é¥¹¤ò·Ñ¾µ¤·¤¿¾ã³²ÊªÍѤλҥ¯¥é¥¹¤òÀ߷פ·¤Æ¼ÂÁõ¤¹¤ë


¡¡¼ÂºÝ¤Ë°ÜÆ°¤¹¤ë¾ã³²ÊªÍѤΥ¯¥é¥¹¤È¤·¤Æ¡¢MovingObstacle ¥¯¥é¥¹¤ÎÀ߷פò¹Ô¤¤¤Þ¤¹¡£
¤³¤Î¥¯¥é¥¹¤Ï MonoBehaviour ¥¯¥é¥¹¤ÎÂå¤ï¤ê¤Ë ObstacleBase ¥¯¥é¥¹¤ò·Ñ¾µ¤µ¤»¤Þ¤¹¡£
¤³¤ì¤Ë¤è¤Ã¤Æ¿Æ¥¯¥é¥¹ ObstacleBase ¡¢»Ò¥¯¥é¥¹ MovingObstacle ¤È¤¤¤¦´ØÏ¢À­¤¬À¸¤Þ¤ì¤Þ¤¹¡£

¡¡¥¯¥é¥¹¤Î·Ñ¾µ¤Ï¡¢¥¯¥é¥¹Ì¾¤Î±¦Â¦¤Ë : (¥³¥í¥ó)¤ò½ñ¤­¡¢¤½¤Î±¦Â¦¤Ë·Ñ¾µ¤µ¤»¤ë¥¯¥é¥¹Ì¾¤ò½ñ¤­¤Þ¤¹¡£

  public class MovingObstacle : ObstacleBase

¡¡¤Ê¤ª¡¢¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤Ë¥¢¥¿¥Ã¥Á¤¹¤ë¤Î¤Ï»Ò¥¯¥é¥¹¡Ê¤³¤³¤Ç¤Ï MovingObstacle ¡Ë¤Î¤ß¤ÇÂç¾æÉפǤ¹¡£
·Ñ¾µ¸µ¤Ç¤¢¤ë¿Æ¥¯¥é¥¹¤òÊÌÅÓ¥¢¥¿¥Ã¥Á¤¹¤ëɬÍפϤ¢¤ê¤Þ¤»¤ó¡£¿Æ¥¯¥é¥¹¤ò·Ñ¾µ¤·¤Æ¤¤¤ë¤Î¤Ç¡¢¤½¤Î·Ñ¾µ¸µ¤Îµ¡Ç½¤â»Ò¥¯¥é¥¹¤ÏÍ­¤·¤Æ¤¤¤ë¤¿¤á¤Ç¤¹¡£

¡¡Unity ¤Ë¤ª¤¤¤ÆÍøÍѤ¹¤ëµ¡²ñ¤Î¿¤¤ MonoBehaviour ¥¯¥é¥¹¤ò·Ñ¾µ¤·¤Æ¤¤¤ë¥¹¥¯¥ê¥×¥È(¿·¤·¤¯¥¹¥¯¥ê¥×¥È¤òºîÀ®¤¹¤ë¤È¼«Æ°Åª¤Ë·Ñ¾µ¤·¤Æ¤¤¤ë¥¯¥é¥¹)¤â¡¢
MonoBehaviour ¤È¤¤¤¦¥¯¥é¥¹¼«ÂΤϥ¢¥¿¥Ã¥Á¤·¤Æ¤¤¤Þ¤»¤ó¤¬¡¢MonoBehaviour ¥¯¥é¥¹¤Î»ý¤Ä Start ¥á¥½¥Ã¥É¤Ê¤É¤¬Í­¸ú¤ËÆ°¤¯¤Î¤Ï¡¢¤³¤Î¥¯¥é¥¹¤Î·Ñ¾µ¤È¤¤¤¦µ¡Ç½¤Ë¤è¤ë¤â¤Î¤Ç¤¹¡£
¡¡


¡¡¥¯¥é¥¹¤ò·Ñ¾µ¤·¤¿¾ì¹ç¡¢·Ñ¾µ¤·¤Æ¤¤¤ë¿Æ¥¯¥é¥¹(º£²ó¤Ç¤¢¤ì¤Ð ObstacleBase ¥¯¥é¥¹)¤Î·Ñ¾µ¤·¤Æ¤¤¤ë¥¯¥é¥¹¤â°ú¤­Â³¤­¤Þ¤¹¡£
¤½¤Î¤¿¤á¡¢¤³¤ì¤«¤éºîÀ®¤¹¤ë MovingObstacle ¥¯¥é¥¹¤Ï MonoBehaivour ¥¯¥é¥¹¤È ObstacleBase ¥¯¥é¥¹¤Î£²¤Ä¤Î¥¯¥é¥¹¤ò·Ñ¾µ¤·¤Æ¤¤¤ë¥¯¥é¥¹¤Ë¤Ê¤ê¤Þ¤¹¡£

¡¡MonoBehaivour ¥¯¥é¥¹¤¬·Ñ¾µ¤µ¤ì¤Æ¤¤¤Þ¤¹¤Î¤Ç¡¢Start ¥á¥½¥Ã¥É¤ä OnTrigger ¡Á ¥á¥½¥Ã¥É¤âÍøÍѤǤ­¤Þ¤¹¤·¡¢
¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤Ë¥¢¥¿¥Ã¥Á¤·¤ÆÍøÍѤ¹¤ë¤³¤È¤â½ÐÍè¤Þ¤¹¡£¼ÂºÝ¤Ë¥¢¥¿¥Ã¥Á¤¹¤ë¥¯¥é¥¹¤¬ MovingObstacle ¥¯¥é¥¹¤Î¤ß¤Ç¤è¤¤Íýͳ¤Ë¤Ê¤ê¤Þ¤¹¡£


MovingObstacle ¥¹¥¯¥ê¥×¥È¤òºîÀ®¤¹¤ë


¡¡¼ÂÁõÎã¤ò£²¤ÄÄ󼨤·¤Þ¤¹¡£

¡¡£±¤Ä¤Ï NavMeshAgent ¥³¥ó¥Ý¡¼¥Í¥ó¥È¤òÍøÍѤ·¤Æ¡¢¾ã³²Êª¤Î°ÜÆ°¤ò¹Ô¤ï¤»¤ë¥¯¥é¥¹¤Ç¤¹¡£
Á°²ó¤Î¼ê½ç¤Ç°ÜÆ°·ÐÏ©ÍѤξðÊó¤ò Bake ¤·¤Æ NavMeshAgent ¤òÍøÍѤǤ­¤ë¾õÂ֤ˤ·¤Æ¤¤¤Þ¤¹¤Î¤Ç¡¢´ðËÜŪ¤Ë¤Ï¤³¤Á¤é¤Ç¤Î¼ÂÁõ¤ò¹Í¤¨¤Æ¤¯¤À¤µ¤¤¡£
¡¡
¡¡¤â¤¦£±¤Ä¤Ï NavMeshAgent ¥³¥ó¥Ý¡¼¥Í¥ó¥È¤Ç¤Ï¤Ê¤¯¤Æ¡¢DOTween ¤Ë¤è¤ê¡¢¾ã³²Êª¤Î°ÜÆ°¤ò¹Ô¤ï¤»¤ë¥¯¥é¥¹¤Ç¤¹¡£


¡ã¼ÂÁõÎã­¡¡¡NavMeshAgent ÍøÍѤ¹¤ë¡ä


¡¡using ¤ÎÀë¸À¤ä¡¢¥¯¥é¥¹¤Î·Ñ¾µÉôʬ¤Ê¤É¤ËÃí°Õ¤·¤Ê¤¬¤éµ­½Ò¤·¤Æ¤¯¤À¤µ¤¤¡£
¤É¤Î¤è¤¦¤Ê½èÍý¤ò¼ÂÁõ¤·¤Æ¤¤¤ë¤Î¤«¤òÍý²ò¤·¤Ê¤¬¤é³Ø½¬¤¹¤ë¤³¤È¤Ç¡¢¼«Ê¬¤Ç¥¹¥¯¥ê¥×¥È¤òºîÀ®¤¹¤ëºÝ¤ËÌòΩ¤Á¤Þ¤¹¡£


MovingObstacle.cs

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



¡ãoverride(¥ª¡¼¥Ð¡¼¥é¥¤¥É) ¥­¡¼¥ï¡¼¥É¡¡¥¯¥é¥¹¤Î·Ñ¾µ»þ¤ËÍøÍѤǤ­¤ë¡¢²¾ÁÛ(Ãê¾Ý)¥á¥½¥Ã¥É¤Î¥ª¡¼¥Ð¡¼¥é¥¤¥É½èÍý¡¡¡¼Â¿ÂÖÀ­(¥Ý¥ê¥â¡¼¥Õ¥£¥º¥à)¡¼¡ä


¡¡abstract ¥­¡¼¥ï¡¼¥É¤Ë¤è¤ëÃê¾Ý¼ÂÁõ¤ä¡¢virtual ¥­¡¼¥ï¡¼¥É¤Ë¤è¤ë²¾ÁÛ¼ÂÁõ¤ËÂФ·¤Æ¼Â¹Ô¤Ç¤­¤ëµ¡Ç½¤Ç¤¹¡£
¾åµ­¤Î£²¤Ä¤Î¥­¡¼¥ï¡¼¥É¤ò»ý¤Ä¥á¥½¥Ã¥É¤ËÂФ·¤Æ¡¢¾åµ­Éôʬ¤ò override ¤ËÊѹ¹¤¹¤ë¤³¤È¤Ç¡¢½èÍý¤ò³ÈÄ¥¤·¤¿¤ê¡¢½ñ¤­´¹¤¨¤¿¤ê¤¹¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£

¡¡¤³¤Î¤È¤­¡¢¥á¥½¥Ã¥É¤Î¥¢¥¯¥»¥¹½¤¾þ»Ò¤òÊѹ¹¤¹¤ë¤³¤È¤Ï½ÐÍè¤Þ¤»¤ó¡£
Î㤨¤Ð¡¢protected virtual ¥á¥½¥Ã¥É¤Ç¤¢¤ì¤Ð¡¢protected override ¥á¥½¥Ã¥É¤Î¤è¤¦¤Ë¡¢¤¢¤¯¤Þ¤Ç¤âƱ¤¸¥¢¥¯¥»¥¹½¤¾þ»Ò¤Ç¤Î¼ÂÁõ¤Ë¤Ê¤ê¤Þ¤¹¡£

¡ã¿Æ¥¯¥é¥¹¤Ë¤¢¤ëÃê¾Ý¥á¥½¥Ã¥É¡ä
    /// <summary>
    /// ½é´üÀßÄê
    /// </summary>
    public abstract void SetUpObstacle();

¡¡¢­¡¡

¡ãÇÉÀ¸(»Ò)¥¯¥é¥¹¤Ç¤Î¥ª¡¼¥Ð¡¼¥é¥¤¥É¼ÂÁõ¡ä
    /// <summary>
    /// ½é´üÀßÄê
    /// </summary>
    public override void SetUpObstacle() {
        if (TryGetComponent(out agent)) {
            StartCoroutine(MoveObstacleByAgent());
        }
    }

¡¡¥ª¡¼¥Ð¡¼¥é¥¤¥É¤È¤¤¤¦Ã±¸ì¤Î»ý¤Ä°ÕÌ£¤ÎÄ̤ê¤Ç¡¢¤³¤Î½èÍý¤ò¹Ô¤Ã¤¿¿Æ¥¯¥é¥¹Â¦¤Ëµ­½Ò¤µ¤ì¤Æ¤¤¤¿Ãê¾Ý/²¾Áۥ᥽¥Ã¥ÉÆâ¤Î½èÍý¤Ï¾å½ñ¤­¤Þ¤¹¡£
Æä˿ƥ¯¥é¥¹¤Ë¼ÂÁõ¤µ¤ì¤Æ¤¤¤ë²¾Áۥ᥽¥Ã¥ÉÆâ¤Î½èÍý¤âÍøÍѤ·¤¿¾å¤Ç¥ª¡¼¥Ð¡¼¥é¥¤¥É¤·¤¿¤¤¾ì¹ç¡¢base ¥­¡¼¥ï¡¼¥É¤òÍøÍѤ·¤Þ¤¹¡£¤³¤Á¤é¤Ï¼¡¤ËÀâÌÀ¤·¤Þ¤¹¡£

¡¡¿Æ¥¯¥é¥¹¤Ë¤¢¤ë virtual ¥­¡¼¥ï¡¼¥É¡¢¤¢¤ë¤¤¤Ï abstract ¥­¡¼¥ï¡¼¥É¤È override ¥­¡¼¥ï¡¼¥É¤È¤Ï¡¢£±ÂУ±¤Ç¤Ä¤Ê¤¬¤Ã¤Æ¤¤¤ë¥¤¥á¡¼¥¸¤Ç¤¹¡£

¡¡¤³¤³¤Þ¤Ç¤Ë¼ÂÁõ¤·¤Æ¤¤¤ë²¾ÁÛ(Ãê¾Ý)¥á¥½¥Ã¥É¤È¡¢¤½¤ì¤ò¾å½ñ¤­¤¹¤ë¥ª¡¼¥Ð¡¼¥é¥¤¥É½èÍýµ¡Ç½¤Ë¤è¤ê¡¢
Ʊ¤¸¥á¥½¥Ã¥É¤Ç¤¢¤Ã¤Æ¤â¡¢½èÍý¤ÎÆâÍƤò¼«Æ°Åª¤ËÊѹ¹¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£¤è¤Ã¤Æ¡¢Æ±¤¸¥á¥½¥Ã¥É¤Ë¤â¤«¤«¤ï¤é¤º¡¢½èÍý¤Î¿¶¤ëÉñ¤¤(ÆâÍÆ)¤¬¼«Æ°Åª¤ËÊѤï¤ë¤³¤È¤Ë¤Ê¤ê¤Þ¤¹¡£

¡¡¤³¤Î¤è¤¦¤Ë¡¢Æ±¤¸¥á¥½¥Ã¥É¤ò¼Â¹Ô¤·¤¿ºÝ¤Ë¡¢°Û¤Ê¤ë¥ª¥Ö¥¸¥§¥¯¥È¤¬°Û¤Ê¤ëÆ°ºî¤ò¹Ô¤¤¡¢¿¶¤ëÉñ¤¤¤ò¼«Æ°Åª¤ËÊѲ½¤µ¤»¤ëÆÃÀ­¤ò¿ÂÖÀ­(¥Ý¥ê¥â¡¼¥Õ¥£¥º¥à)¤È¤¤¤¤¤Þ¤¹¡£

¡¡¥¯¥é¥¹¤Î·Ñ¾µ¤È¹ç¤ï¤»¤Æ¡¢¥ª¥Ö¥¸¥§¥¯¥È»Ø¸þ¥×¥í¥°¥é¥ß¥ó¥°¤Î½ÅÍפʳµÇ°¤Ë¤Ê¤ê¤Þ¤¹¡£
¿¤¯¤Îµ­»ö¤¬¥Í¥Ã¥È¾å¤Ë¤¢¤ê¤Þ¤¹¤Î¤Ç¡¢¼«Ê¬¤Ç¤âÄ´¤Ù¤Æ¡¢Íý²ò¤ò¿¼¤á¤Æ¤¤¤­¤Þ¤·¤ç¤¦¡£


¡ã»²¹Í¥µ¥¤¥È¡ä
MicroSoft
override (C# ¥ê¥Õ¥¡¥ì¥ó¥¹)
https://docs.microsoft.com/ja-jp/dotnet/csharp/lan...
MicroSoft
¥Ý¥ê¥â¡¼¥Õ¥£¥º¥à
https://docs.microsoft.com/ja-jp/dotnet/csharp/fun...


¡ãNavMeshAgent ¤ËÍÑ°Õ¤µ¤ì¤Æ¤¤¤ëÊÑ¿ô¤È¥á¥½¥Ã¥É­¡¡ä


¡¡NavMeshAgent ¥¯¥é¥¹¤Ë¤Ï¿¤¯¤ÎÊÑ¿ô¤È¥á¥½¥Ã¥É¤¬ÍÑ°Õ¤µ¤ì¤Æ¤¤¤Þ¤¹¡£
¤³¤Îµ¡Ç½¤ò¾å¼ê¤¯³èÍѤ¹¤ë¤³¤È¤Ë¤è¤ê¡¢AI ¤Ë¤è¤ë NavMeshAgent ¤Î¥ë¡¼¥È¤Î¼«Æ°°ÜÆ°¤ò¼ÂÁõ¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£

¡¡NavMeshAgent ·¿¤ò¥¹¥¯¥ê¥×¥ÈÆâ¤ÇÀë¸À¤·¡¢³ÆÊÑ¿ô¤ä¥á¥½¥Ã¥É¤òÍøÍѤ¹¤ë¤¿¤á¤Ë¤Ï using UnityEngine.AI; ¤ÎÀë¸À¤¬É¬ÍפǤ¹¡£

£±¡¥NavMeshAgent.destination ÊÑ¿ô

¡¡NavMeshAgent ÌÜɸÃÏÅÀ¤òÀßÄꤹ¤ë¤³¤È¤¬¤Ç¤­¤ë Vector3 ·¿¤ÎÊÑ¿ô¤Ç¤¹¡£
¤³¤Î¾ðÊó¤ò¥»¥Ã¥È¤¹¤ë¤³¤È¤Ç¡¢NavMeshAgent ¤ËÌÜŪÃϤذÜÆ°¤¹¤ë¤³¤È¤òÅÁ¤¨¡¢°ÜÆ°¤ò³«»Ï¤µ¤»¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£

¡ã»²¹Í¥µ¥¤¥È¡ä
Unity ¸ø¼°¥¹¥¯¥ê¥×¥È¥ê¥Õ¥¡¥ì¥ó¥¹
NavMeshAgent.destination
https://docs.unity3d.com/jp/current/ScriptReferenc...
Unity ¸ø¼°¥Þ¥Ë¥å¥¢¥ë
NavMeshAgent ¤ËÌÜŪÃϤذÜÆ°¤¹¤ë¤³¤È¤òÅÁ¤¨¤ë
https://docs.unity3d.com/ja/current/Manual/nav-Mov...


£²¡¥NavMeshAgent.speed ÊÑ¿ô

¡¡NavMeshAgent ¤Ë¤è¤ë¥ë¡¼¥È°ÜÆ°»þ¤ÎºÇÂç®ÅÙ¤ÎÀßÄêÃͤǤ¹¡£0 ¤Ë¤¹¤ë¤³¤È¤Ç°ÜÆ°¤ÏÄä»ß¤·¤Þ¤¹¡£


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


£³¡¥NavMeshAgent.velocity ÊÑ¿ô

¡¡NavMeshAgent ¤Ë¤è¤ë¸½ºß¤Î°Üư®ÅÙ¤ò¼¨¤·¤Þ¤¹¡£¤³¤ÎÃÍ¤Ï Vector3 ·¿¤Ç¤¢¤ë¤¿¤á¡¢Vector3 ·¿¤Ë¤Õ¤¯¤Þ¤ì¤Æ¤¤¤ë sqrMagnitude ÊÑ¿ô¤â°·¤¦¤³¤È¤¬½ÐÍè¤Þ¤¹¡£
ÌÜŪÃÏÅÀ¤Ë¸þ¤±¤¿°ÜÆ°»þ¤Î¾×ÆͲóÈò¾ðÊó¤ä²Ã®ÅÙ¤ÎÀ©¸æ¤Ê¤É¤ò²ÃÌ£¤·¤¿¾å¤Ç¤Î°Üư®ÅÙ¤ò¼«Æ°Åª¤Ë¥·¥ß¥å¥ì¡¼¥È¤·¤Æ·×»»¤µ¤ì¤ÆÀßÄꤵ¤ì¤Þ¤¹¡£

¡¡°ÜÆ°¤òÄä»ß¤·¤Æ¤¤¤ë¤È¤­¤Ï¡¢ velocity ¤Î³ÆÃÍ¤Ï 0 ¤Ë¤Ê¤ê¤Þ¤¹¡£

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


¡ã¼ÂÁõÎã­¢¡¡NavMeshAgent ÍøÍѤ·¤Ê¤¤¡ä


¡¡°ÜÆ°½èÍý¤Ë NavMeshAgent ¤òÍøÍѤ»¤º¡¢DOTween ¤Î DOPath ¥á¥½¥Ã¥É¤òÍøÍѤ·¤¿¥±¡¼¥¹¤Ç¤¹¡£

¡¡Ãê¾Ý¥á¥½¥Ã¥É¤Î½èÍý¤ÎÆâÍƤ¬ NavMeshAgent ¤òÍøÍѤ·¤Æ¤¤¤ë¾ì¹ç¤È°ã¤¦¤³¤È¤ËÃíÌܤ·¤Æ¤ª¤¤¤Æ¤¯¤À¤µ¤¤¡£


MovingObstacle.cs

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



°ÜÆ°¤¹¤ë¾ã³²Êª¤ÎÌÜɸÃÏÅÀ¤òºîÀ®¤¹¤ë


¡¡¾ã³²ÊªÍѤΥ²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤¬ NavMeshAgent ¤Îµ¡Ç½¤Ë¤è¤Ã¤Æ°ÜÆ°¤µ¤»¤ë¤³¤È¤Ë¤Ê¤ê¤Þ¤¹¤Î¤Ç¡¢
¤½¤ÎÌÜɸÃÏÅÀ¤È¤Ê¤ëÃÏÅÀ¤ò¡¢¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤È¤·¤Æ»öÁ°¤ËÅÐÏ¿¤·¤Æ¤ª¤­¤Þ¤¹¡£

¡¡Scene¥Ó¥å¡¼ ¤Î NavMeshAgent ¤¬°ÜÆ°²Äǽ¤ÊÈϰϾå¤Ë¡¢CreateEmpty ¤ò¹Ô¤¤¡¢¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤òÇÛÃÖ¤·¤Æ¤¯¤À¤µ¤¤¡£
¤³¤ì¤¬ÌÜɸÃÏÅÀ¤ÎºÂɸ¾ðÊó¤È¤·¤Æ°·¤¦¤³¤È¤Ë¤Ê¤ê¤Þ¤¹¤Î¤Ç¡¢¹¥¤­¤Ê¿ô¤Î¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤òÇÛÃÖ¤·¤Æ¤¯¤À¤µ¤¤¡£
¤Þ¤¿¡¢¸½ºß¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤¬¤¤¤ëÃÏÅÀ¤Ë¤âÇÛÃÖ¤·¤Æ¤¯¤À¤µ¤¤¡£¤½¤¦¤¹¤ë¤³¤È¤Ç¡¢¥¹¥¿¡¼¥ÈÃÏÅÀ¤Ë¤âÌá¤ì¤ë¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£

¡¡ºÇÄã¤Ç¤â£²¤Ä°Ê¾å¤ÎÃÏÅÀ¤òºîÀ®¤·¤Æ¤¯¤À¤µ¤¤¡£


°ÜÆ°¤¹¤ë¾ã³²Êª¤Î¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤Ë MovingObstacle ¥¹¥¯¥ê¥×¥È¤ò¥¢¥¿¥Ã¥Á¤¹¤ë


¡¡°ÜÆ°¤¹¤ë¾ã³²Êª¤È¤·¤Æ¤ÎÌò³ä¤ò»ý¤¿¤»¤¿¤¤¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤Ë¡¢MovingObstacle ¥¹¥¯¥ê¥×¥È¤ò¥¢¥¿¥Ã¥Á¤·¤Þ¤¹¡£
RequireComponent °À­¤¬ÉÕÍ¿¤µ¤ì¤Æ¤¤¤ë¤¿¤á¡¢¼«Æ°Åª¤Ë NavMeshAgent ¥³¥ó¥Ý¡¼¥Í¥ó¥È¤¬¥¢¥¿¥Ã¥Á¤µ¤ì¤Þ¤¹¡£

¡¡MovingObstacle ¥¹¥¯¥ê¥×¥È¤ÎÀßÄê¤Ë¤Ä¤¤¤Æ¤Ï¡¢°ÜÆ°ÍѤÎÀßÄê¤Î¤ß¤ò¹Ô¤¤¡¢Â¾¤ÎÉôʬ¤Ï¸åÄøÄɲä·¤Þ¤¹¡£

¡¡TargetTrans ÊÑ¿ô¤Ë¤Ï¡¢NavMeshAgent ¤ÎÌÜŪÃϤò½çÈÖ¤ËÀßÄꤷ¤Þ¤¹¡£
¡¡ÊÑ¿ô¤ÏÇÛÎó¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¤Î¤Ç¡¢¹¥¤­¤Ê¿ô¤Î Size ¤òÀßÄꤷ¡¢¤½¤Îʬ¤ÎÌÜɸÃÏÅÀ¤òÅÐÏ¿¤·¤Æ¤¯¤À¤µ¤¤¡£Element 0 ¤¬ºÇ½é¤ÎÌÜŪÃϤȤ·¤ÆÍøÍѤµ¤ì¤Þ¤¹¡£
ºÇÄã¤Ç¤â£²¤Ä¤ÎÇÛÎó¤ÏÍÑ°Õ¤·¡¢ºÇ¸å¤ÎÇÛÎó¤ÎÍ×ÁǤˤϥ²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤Î¥¹¥¿¡¼¥ÈÃÏÅÀ¤òÅÐÏ¿¤·¤Æ¤ª¤¯¤³¤È¤Ç¡¢
¤°¤ë¤°¤ë¤ÈƱ¤¸¥ë¡¼¥È¤ò¼þ²ó¤¹¤ë¾ã³²Êª¤òºîÀ®¤¹¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£

¡¡WaitTimes ÊÑ¿ô¤âÇÛÎó¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¤Î¤Ç¡¢TargetTrans ÊÑ¿ô¤Î Size ¤ÈƱ¤¸¿ô¤Î Size ¤ÇÀßÄꤷ¤Þ¤¹¡£
¤³¤ÎÃͤ¬ÌÜɸÃÏÅÀ¤ËÅþã¸å¤ÎÂÔµ¡»þ´Ö¤Ë¤Ê¤ê¤Þ¤¹¡£Ä¹¤¯¤È¤É¤Þ¤é¤»¤¿¤¤¾ì¹ç¤Ë¤Ï¿ô»ú¤òÂ礭¤¯¤·¡¢
ÌÜɸÃÏÅÀ¤ò¥¹¥ë¡¼¤·¤Æ¤¹¤°¤Ë¼¡¤ÎÌÜɸÃÏÅÀ¤Ë¸þ¤«¤ï¤»¤¿¤¤¾ì¹ç¤Ë¤Ï 0 ¤Ë¤·¤Æ¤ª¤­¤Þ¤¹¡£
¤¹¤Ù¤Æ¤ÎÃÏÅÀ¤ò¥¹¥ë¡¼¤¹¤ë¤è¤¦¤Ë¤·¤Æ¤âÌäÂꤢ¤ê¤Þ¤»¤ó¤¬¡¢¤½¤Î¾ì¹ç¤Ë¤âÇÛÎó¤òÍÑ°Õ¤·¤Æ¡¢³Æ Element ¤Ë 0 ¤òÅÐÏ¿¤·¤Æ¤¯¤À¤µ¤¤¡£


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



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


¡¡¥²¡¼¥à¤ò¼Â¹Ô¤·¡¢¾ã³²ÊªÍѤÎŨ¤¬·ÐÏ©¾å¤ò¼«Æ°¤Ç°ÜÆ°¤¹¤ë¤«¤ò³Îǧ¤·¤Æ¤¯¤À¤µ¤¤¡£
¼«Æ°Åª¤Ë¥ë¡¼¥×¤·¡¢Æ±¤¸¥ë¡¼¥È¾å¤ò×Ñ×ˤ¹¤ë¤è¤¦¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¤Î¤Ç¡¢¤½¤Á¤é¤Î³Îǧ¤â¤ª¤³¤Ê¤Ã¤Æ¤¯¤À¤µ¤¤¡£


¡ã¼ÂÁõÆ°²è­¡¡ä
Æ°²è¥Õ¥¡¥¤¥ë¤Ø¤Î¥ê¥ó¥¯


¡ã¼ÂÁõÆ°²è­¢¡ä
Æ°²è¥Õ¥¡¥¤¥ë¤Ø¤Î¥ê¥ó¥¯


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

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


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

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

Menu



´ðÁÃ

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

private



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

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