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

¡¡¥×¥ì¥¤¥ä¡¼¤ËºÇ¤â¶á¤¤Å¨¤ò¸«¤Ä¤±¤Æ¡¢¤½¤ÎÊý¸þ¤ËÃƤòȯ¼Í¤¹¤ëµ¡Ç½¤Î¼ÂÁõÎã¤Ç¤¹¡£
Ê£¿ô¤ÎŨ¤ò¸«¤Ä¤±¤¿¤ê¡¢ÄÉÈø¤¹¤ëµ¡Ç½¤âÉÕ¤¤¤Æ¤¤¤Þ¤¹¡£



Á°Äó


¡¡GameData ¥¯¥é¥¹¤¬¤¢¤ê¡¢¤½¤³¤Ç¤ÏŨ¤Î¾ðÊó¤ÈÄÉÈøÂоݤò List ¤Ç´ÉÍý¤·¤Æ¤¤¤Þ¤¹¡£
Ũ¤Î¾ðÊó¤Î List ¤Ë¤Ï¡¢Å¨¤ÎÀ¸À®»þ¤ËŨ¤Î¾ðÊó¤¬Äɲ䵤ì¤ë»ÅÁȤߤǤ¹¡£
ÄÉÈøÂоݤΠList ¤Ë¤Ï¡¢¥×¥ì¥¤¥ä¡¼¤Ë¶á¤¤Å¨¤Î¾ðÊ󤬤½¤ÎÅÔÅÙÄɲ䵤졢ÃƤ¬¤Ê¤¯¤Ê¤ë¤ÈƱ»þ¤Ë List ¤«¤é¤âºï½ü¤µ¤ì¤ë»ÅÁȤߤǤ¹¡£

¡¡List ¤Î·¿¤ÏŨ¤Î¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤Ë¥¢¥¿¥Ã¥Á¤µ¤ì¤Æ¤¤¤ë EnemyController ¥¯¥é¥¹¤Ç¤¹¡£
GameObject ·¿¤è¤ê¤âÌ¿Îá¤ò½Ð¤¹ºÝ¤Ë GetComponent ¤¬ÉÔÍפȤʤꡢͻÄ̤¬Íø¤¯¤¿¤á¤Ç¤¹¡£

¡¡²¼µ­¤Ë¥µ¥ó¥×¥ë¤òÄ󼨤·¤Þ¤¹¡£




EnemyController.cs

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





GameData.cs

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



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


¡¡LINQ ¤òÍøÍѤ·¤Æµ­½Ò¤·¤Æ¤¤¤Þ¤¹¡£

¡¡ÃÆÌò¤Î¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤Ë¥¢¥¿¥Ã¥Á¤·¤ÆÍøÍѤ·¤Þ¤¹¡£
£±¤Ä¤ÎÃƤε¡Ç½¤Ë¤Ê¤ê¤Þ¤¹¤Î¤Ç¡¢Î㤨¤Ð¡¢Ê£¿ô¤ÎÃƤòÀ¸À®¤¹¤ì¤Ð¡¢¤½¤ì¤é¤¬°Û¤Ê¤ëŨ¤ò¸«¤Ä¤±¤Æȯ¼Í¤µ¤ì¤Þ¤¹¡£


HomingBullet.cs



¡ãVector2.MoveTowards ¥á¥½¥Ã¥É¤òÍøÍѤ·¤¿ÄÉÈø½èÍý¡ä


¡¡Update ¥á¥½¥Ã¥ÉÆâ¤Ë¤¢¤ë²¼µ­¤Î½èÍý¤Ë¤è¤Ã¤ÆŨ¤òÄÉÈø¤·¤Æ¤¤¤ë¤¿¤á¡¢ºï½ü¤¹¤ë¤«¡¢¥³¥á¥ó¥È¥¢¥¦¥È¤¹¤ì¤ÐÄÉÈø¤Ï¤·¤Ê¤¯¤Ê¤ê¤Þ¤¹¡£

// ÄÉÈøÂоݤòÄɤ¤¤«¤±¤ë
transform.position = Vector2.MoveTowards(transform.position, target.transform.position, bulletSpeed * Time.deltaTime);

¡¡transform.position¤Ï¡¢¤³¤Î¥³¡¼¥É¤ò´Þ¤à¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤Î¸½ºß¤Î°ÌÃÖ¤òɽ¤·¤Þ¤¹¡£¤Ä¤Þ¤ê¡¢ÃƤΰÌÃ֤Ǥ¹¡£

¡¡Vector2.MoveTowards ¥á¥½¥Ã¥É¤Ï¡¢¸½ºß¤Î°ÌÃÖ¤«¤é»ØÄꤵ¤ì¤¿°ÌÃ֤˸þ¤«¤Ã¤Æ°ÜÆ°¤¹¤ë¤¿¤á¤Î¥á¥½¥Ã¥É¤Ç¤¹¡£
Âè1°ú¿ô¤Ë»ØÄꤷ¤¿ÂоÝ(ÃÆ)¤ò¡¢Âè2°ú¿ô¤Ë»ØÄꤵ¤ì¤¿°ÌÃÖ¡Êtarget.transform.position¡Ë¤Ë¸þ¤«¤Ã¤Æ¡¢ÃƤ¬¿Ê¤à¤È¤­¤Î¿·¤·¤¤°ÌÃÖ¤ò·×»»¤·¤Þ¤¹¡£

¡¡target.transform.position ¤Ï¡¢ÃƤ¬Äɤ¤¤«¤±¤ëÂоݤΰÌÃÖ¤òɽ¤·¤Þ¤¹¡£¤Ä¤Þ¤ê¡¢ÃƤϤ³¤Î°ÌÃ֤˸þ¤«¤Ã¤Æ°ÜÆ°¤·¤è¤¦¤È¤·¤Æ¤¤¤Þ¤¹¡£

¡¡bulletSpeed * Time.deltaTime¤Ï¡¢ÃƤοʤதµ¤òɽ¤·¤Þ¤¹¡£
bulletSpeed ¤ÏÃƤΰÜư®ÅÙ¤òɽ¤·¡¢Time.deltaTime ¤Ï¥Õ¥ì¡¼¥à´Ö¤Î»þ´Öº¹¤ò¹Íθ¤·¤Æ°ÜÆ°µ÷Î¥¤òÄ´À°¤·¤Þ¤¹¡£
¤³¤ì¤Ë¤è¤ê¡¢¥²¡¼¥à¤¬¤É¤ì¤À¤±Á᤯¼Â¹Ô¤µ¤ì¤Æ¤¤¤ë¤«¤Ë´Ø·¸¤Ê¤¯¡¢°ìÄê¤Î®¤µ¤Ç°ÜÆ°¤·¤Þ¤¹¡£

¡¡°Ê¾å¡¢¤³¤Î½èÍý¤ÏÃƤ¬Ëè¥Õ¥ì¡¼¥à¤´¤È¤ËÂоݤΰÌÃ֤˸þ¤«¤Ã¤Æ°ìÊâ¿Ê¤à¤³¤È¤òɽ¤·¤Æ¤¤¤Þ¤¹¡£
ÃÆ¤Ï bulletSpeed ¤Ç»ØÄꤵ¤ì¤¿Â®ÅÙ¤ÇÂоݤòÄɤ¤¤«¤±¤Þ¤¹¡£¤³¤ì¤Ë¤è¤ê¡¢ÃƤÏÌÜɸ¤òÄÉÀפ·¡¢¤½¤Î°ÌÃ֤˶á¤Å¤¤¤Æ¤¤¤­¤Þ¤¹¡£


»²¹Í¥µ¥¤¥È
Unity ¸ø¼°¥¹¥¯¥ê¥×¥È¡¦¥ê¥Õ¥¡¥ì¥ó¥¹
Vector2.MoveTowards


¡ãLINQ ¤Ë¤è¤ëºÇ¤â¶á¤¤Å¨¤ò¸«¤Ä¤±¤ë½èÍý¡ä


var sortedEnemies = GameData.instance.enemiesList.OrderBy(enemy => Vector2.Distance(transform.position, enemy.transform.position));

¡¡¤³¤ÎÉôʬ¤Ç¤Ï¡¢enemiesList ¤È¸Æ¤Ð¤ì¤ë¥ê¥¹¥ÈÆâ¤ÎŨ¥­¥ã¥é¥¯¥¿¡¼¤ò¡¢¥×¥ì¥¤¥ä¡¼¤Î°ÌÃÖ¤«¤é¤Îµ÷Î¥¤¬¶á¤¤½ç¤ËʤÙÂؤ¨¤Æ¤¤¤Þ¤¹¡£

¡¡GameData.instance.enemiesList ¤Ï GameData ¥¯¥é¥¹¤«¤é¼èÆÀ¤·¤¿Å¨¥­¥ã¥é¥¯¥¿¡¼¤Î¥ê¥¹¥È¤Ç¤¹¡£

¡¡.OrderBy(enemy => Vector2.Distance(transform.position, enemy.transform.position)) ¤Î¤¦¤Á¡¢
OrderBy ¥á¥½¥Ã¥É¤Ï¡¢»ØÄꤵ¤ì¤¿¾ò·ï¤Ë½¾¤Ã¤ÆÍ×ÁǤòʤÙÂؤ¨¤ë¤¿¤á¤ÎLINQ¥á¥½¥Ã¥É¤Ç¤¹¡£
¤³¤Î¾ì¹ç¡¢enemy ¤È¤¤¤¦³ÆŨ¥­¥ã¥é¥¯¥¿¡¼¤ËÂФ·¤Æ¡¢Vector2.Distance(transform.position, enemy.transform.position) ¤ò¹Ô¤¤¤Þ¤¹¡£
enemy ¤Î°ÌÃÖ¤«¤é¥×¥ì¥¤¥ä¡¼¤Î°ÌÃ֤ޤǤε÷Î¥¤ò·×»»¤·¤Æ¡¢¤½¤Îµ÷Î¥¤¬¾®¤µ¤¤½ç¤ËʤÙÂؤ¨¤Æ¤¤¤Þ¤¹¡£

¡¡¤³¤ì¤Ë¤è¤ê¡¢°ìÈֶᤤŨ¤¬ºÇ½é¤ËÍè¤ë¤è¤¦¤Ë¥½¡¼¥È¤µ¤ì¤¿ sortedEnemies ¤È¤¤¤¦¿·¤·¤¤ List ¤¬´°À®¤·¤Þ¤¹¡£


»²¹Í¥µ¥¤¥È
MicroSoft
Enumerable.OrderBy ¥á¥½¥Ã¥É



target = sortedEnemies.FirstOrDefault(enemy => !GameData.instance.targetList.Contains(enemy));

¡¡¤³¤ÎÉôʬ¤Ç¤Ï¡¢sortedEnemies ¥ê¥¹¥ÈÆ⤫¤éºÇ¤â¶á¤¤Ì¤ÁªÂò¤ÎŨ¡Êtarget¡Ë¤ò¸«¤Ä¤±¤Æ¤¤¤Þ¤¹¡£

¡¡sortedEnemies ¤Ï°ìÈֶᤤŨ¤¬Í×ÁǤκǽé¤ËÍè¤ë¤è¤¦¤Ë¥½¡¼¥È¤µ¤ì¤¿Å¨¥­¥ã¥é¥¯¥¿¡¼¤Î¥ê¥¹¥È¤Ç¤¹¡£
.FirstOrDefault(enemy => !GameData.instance.targetList.Contains(enemy)) ¤Î¤¦¤Á FirstOrDefault ¥á¥½¥Ã¥É¤Ï¡¢
»ØÄꤵ¤ì¤¿¾ò·ï¤Ë¹çÃפ¹¤ëºÇ½é¤ÎÍ×ÁǤòÊÖ¤¹LINQ¥á¥½¥Ã¥É¤Ç¤¹¡£
¤³¤³¤Ç¤Ï¡¢enemy ¤È¤¤¤¦³ÆŨ¥­¥ã¥é¥¯¥¿¡¼¤ËÂФ·¤Æ¡¢¤½¤ÎŨ¤¬¤Þ¤ÀÁªÂò¤µ¤ì¤Æ¤¤¤Ê¤¤¡ÊtargetList ¤Ë´Þ¤Þ¤ì¤Æ¤¤¤Ê¤¤¡Ë¾ì¹ç¡¢¤½¤ÎŨ¤ò target ¤ËÀßÄꤷ¤Þ¤¹¡£
targetList ¤Ë´Þ¤Þ¤ì¤Æ¤¤¤Ê¤¤¤«¤É¤¦¤«¤Ï¡¢Contains ¥á¥½¥Ã¥É¤òÍøÍѤ·¤ÆȽÄꤷ¤Æ¤¤¤Þ¤¹¡£

¡¡°Ê¾å¤Î¤³¤È¤«¤é¡¢¤³¤Î½èÍý¤ÎÌÜŪ¤Ï¡¢¥×¥ì¥¤¥ä¡¼¤«¤éºÇ¤â¶á¤¤Ì¤ÁªÂò¤ÎŨ¤ò¸«¤Ä¤±¤Æ target ¤ËÀßÄꤹ¤ë¤³¤È¤Ç¤¹¡£


»²¹Í¥µ¥¤¥È
MicroSoft
Enumerable.FirstOrDefault ¥á¥½¥Ã¥É



¡¡¾åµ­¤Î½èÍý¤Ë¤è¤ê¡¢¥×¥ì¥¤¥ä¡¼¤Ë¶á¤¤Å¨¤«¤é½çÈÖ¤ËÂоÝÀè¤Î List ¤ËÆþ¤ê¤Þ¤¹¡£

// ¥¿¡¼¥²¥Ã¥È¤ò¥ê¥¹¥È¤ËÄɲÃ
GameData.instance.targetList.Add(target);

¡¡¤½¤Î¤¿¤á¡¢£²¤ÄÌܤÎÃƤòȯ¼Í¤·¤¿¾ì¹ç¡¢ºÇ½é¤ÎÂоݤǤϤʤ¯¡¢¼¡¤Ë¶á¤¤Å¨¤òÂоݤȤ·¤Æ¼è¤ê¤Þ¤¹¡£

¡¡¤â¤·¤â¡¢Ê£¿ô¤ÎÃƤòºÇ¤â¶á¤¤Å¨¤Ë¸þ¤±¤Æ¤À¤±È¯¼Í¤·¤¿¤¤¾ì¹ç¤Ë¤Ï¡¢¤³¤Î List ¤ËÆþ¤ì¤ë½èÍý¤ò¤Ê¤¯¤¹¤³¤È¤Ç¼Â¸½¤Ç¤­¤Þ¤¹¡£


LINQ ¤òÍøÍѤ·¤Ê¤¤¾ì¹ç¤Î¥µ¥ó¥×¥ë¥³¡¼¥É


¡¡½èÍý¤ÎÆâÍƤϤޤ俤¯Æ±¤¸¤Ç¤¹¤¬¡¢LINQ ¤ÎÉôʬ¤ò foreach ¤òÍøÍѤ·¤Æ¼ÂÁõ¤·¤Æ¤¤¤Þ¤¹¡£
LINQ ¤Îµ¡Ç½¤¬Ì¤³Ø½¬¤Ç¤¢¤ë¾ì¹ç¤Ë¤Ï¡¢¤³¤Á¤é¤òÆɤ߲ò¤¯Îý½¬¤«¤é»Ï¤á¤Þ¤·¤ç¤¦¡£



HomingBullet.cs



¡ãVector2.Distance ¤È Vector2.SqrMagnitude ¤Î°ã¤¤¤Ë¤Ä¤¤¤Æ¡ä


¡¡£²ÅÀ´Ö¤ÎÂоݤε÷Î¥¤Ë¤Ä¤¤¤Æ¤Ï¡¢¾åµ­¤Î£²¤Ä¤Î½èÍý¤òÍøÍѤ¹¤ë¥±¡¼¥¹¤¬Â¿¤¤¤Ç¤¹¡£



»²¹Í¥µ¥¤¥È
Unity ¸ø¼°¥¹¥¯¥ê¥×¥È¡¦¥ê¥Õ¥¡¥ì¥ó¥¹
Vector2.Distance
Unity ¸ø¼°¥¹¥¯¥ê¥×¥È¡¦¥ê¥Õ¥¡¥ì¥ó¥¹
Vector2.sqrMagnitude



¡¡SqrMagnitude ¤Ïµ÷Î¥¤Î2¾è¤ò·×»»¤·¤Þ¤¹¤¬¡¢Distance ¤Ïµ÷Î¥¤ÎÊ¿Êýº¬¤ò·×»»¤·¤Þ¤¹¡£
Ê¿Êýº¬¤Î·×»»¤Ï·×»»Î̤¬Â¿¤¤¤¿¤á¡¢Èó¾ï¤ËÂçÎ̤Υª¥Ö¥¸¥§¥¯¥È¤ò¥½¡¼¥È¤¹¤ë¾ì¹ç¤Ë¤Ï SqrMagnitude ¤ÎÊý¤¬¥Ñ¥Õ¥©¡¼¥Þ¥ó¥¹¤¬¸þ¾å¤·¤Þ¤¹¡£
¤·¤«¤·¡¢Ä̾ï¤Î¥²¡¼¥àÆâ¤Ç¿ô¸Ä¤ÎŨ¤ò¥½¡¼¥È¤¹¤ë¾ì¹ç¤Ë¤Ï¡¢¥Ñ¥Õ¥©¡¼¥Þ¥ó¥¹¤Îº¹¤Ï¤Û¤È¤ó¤É´¶¤¸¤é¤ì¤Ê¤¤¤Ç¤·¤ç¤¦¡£

¡¡Distance ¤ÏÀµ³Î¤Êµ÷Î¥¤òÄ󶡤·¤Þ¤¹¤¬¡¢SqrMagnitude ¤Ïµ÷Î¥¤Î2¾è¤òÄ󶡤·¤Þ¤¹¡£
Àµ³Î¤µ¤¬½ÅÍפʾì¹ç¤Ë¤Ï Distance ¤ò»ÈÍѤ·¤Þ¤¹¡£¤¿¤È¤¨¤Ðº£²ó¤Î¤è¤¦¤Ê¡¢Å¨¤Î´Ö³Ö¤ò¸·Ì©¤ËÈæ³Ó¤¹¤ëɬÍפ¬¤¢¤ë¾ì¹ç¤Ç¤¹¡£

¡¡Distance ¤Ïµ÷Î¥¤òľÀÜɽ¤¹¤¿¤á¡¢¥³¡¼¥É¤¬Æɤߤ䤹¤¤¤³¤È¤¬¤¢¤ê¤Þ¤¹¡£
SqrMagnitude ¤Î¾ì¹ç¡¢µ÷Î¥¤Î2¾è¤òÈæ³Ó¤¹¤ë¤¿¤á¡¢¥³¡¼¥É¤Î°Õ¿Þ¤¬¾¯¤·Ê¬¤«¤ê¤Ë¤¯¤¯¤Ê¤ë¤³¤È¤¬¤¢¤ê¤Þ¤¹¡£

¡¡¤·¤¿¤¬¤Ã¤Æ¡¢¤É¤Á¤é¤ò»ÈÍѤ¹¤ë¤«¤Ï¥²¡¼¥à¤ÎÍ×·ï¤È¥³¡¼¥É¤Î¥Ñ¥Õ¥©¡¼¥Þ¥ó¥¹Í×·ï¤Ë°Í¸¤·¤Þ¤¹¡£
Ä̾¥Ñ¥Õ¥©¡¼¥Þ¥ó¥¹¤ËÂФ¹¤ëÂ礭¤Ê·üÇ°¤¬¤Ê¤¤¾ì¹ç¤Ï¡¢Distance ¤ò»ÈÍѤ¹¤ë¤³¤È¤¬°ìÈÌŪ¤Ç¤¹¡£
SqrMagnitude ¤Ï·×»»¸úΨ¤òºÇŬ²½¤·¤¿¤¤¾ì¹ç(ÂçÎ̤η׻»¤¬É¬Íפʾì¹ç)¤ËÌòΩ¤Ä¥Ä¡¼¥ë¤È¤·¤Æ»È¤ï¤ì¤Þ¤¹¡£
ɬÍפ˱þ¤¸¤Æ¡¢¥Ñ¥Õ¥©¡¼¥Þ¥ó¥¹¤¬ÌäÂê¤Ë¤Ê¤ë¾ì¹ç¤Ë Distance ¤Ç¤Ï¤Ê¤¯ SqrMagnitude ¤ËÀÚ¤êÂؤ¨¤ë¤³¤È¤ò¸¡Æ¤¤·¤Æ¤¯¤À¤µ¤¤¡£

¡¡¤¿¤À¤·¡¢Àµ³Î¤Êµ÷Î¥¤¬É¬Íפʾì¹ç¤ä¡¢Æɤߤ䤹¤¤¥³¡¼¥É¤ò½ñ¤­¤¿¤¤¾ì¹ç¤Ë¤Ï Distance ¤òÁª¤Ö¤è¤¦¤Ë¤·¤Þ¤·¤ç¤¦¡£

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


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

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

Menu



´ðÁÃ

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

private



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

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