i-school - ¥Ù¥ë¥È¥¹¥¯¥í¡¼¥ë¥¢¥¯¥·¥ç¥ó¡¡¥¨¥ê¥¢¥Ç¡¼¥¿¤òÍøÍѤ·¤¿Å¨¤ÎÀ¸À®ÊýË¡
¡¡¥Ù¥ë¥È¥¹¥¯¥í¡¼¥ë¥¢¥¯¥·¥ç¥ó¤Ç¤Ï³Æ¥¨¥ê¥¢Ã±°Ì¤ÇŨ¤¬À¸À®¤µ¤ì¤Þ¤¹¡£¤³¤Î¥í¥¸¥Ã¥¯¤òÀ߷פ·¤Æ¤¤¤­¤Þ¤¹¡£



Àß·×


¡¡¥¹¥¯¥ê¥×¥¿¥Ö¥ë¡¦¥ª¥Ö¥¸¥§¥¯¥È¤ËÅÐÏ¿¤¹¤ë¾ðÊó¤Ë¤Ï¡¢³Æ¥¨¥ê¥¢¤Î¥Ç¡¼¥¿¤È¤·¤Æ AreaData ¥¯¥é¥¹¤òList¤È¤·¤Æ´ÉÍý¤·¤Æ¤¤¤Þ¤¹¡£
¤½¤Î¤¿¤á¡¢¥¹¥Æ¡¼¥¸¤´¤È¤Ë¥¨¥ê¥¢¤Î¿ô¤ò²ÄÊѲ½¤¹¤ë¤³¤È¤¬²Äǽ¤Ç¤¹¡£¤Þ¤¿¡¢AreaData ¥¯¥é¥¹¤Ë¤Ï½Ð¸½¤¹¤ëŨ¤Î¾ðÊó¤òÅÐÏ¿¤¹¤ë¤³¤È¤¬¤Ç¤­¤ë¤è¤¦¤ÊÀ߷פˤʤäƤ¤¤Þ¤¹¡£

¡¡¤³¤Î¾ðÊó¤òÍøÍѤ·¤Æ¡¢³Æ¥¨¥ê¥¢¤Ë½Ð¸½¤¹¤ëŨ¤Î¼ïÎà¤È¿ô¤ò¼«Æ°Åª¤ËÀ¸À®¤¹¤ë»ÅÁȤߤò½çÈ֤˺î¤ê¤Þ¤¹¡£

¡¡¤³¤Î¼ê½ç¤Ç¤Ï¤Þ¤º¡¢Å¨¤Î¼«Æ°À¸À®¤ò·«¤êÊÖ¤¹¥µ¥¤¥¯¥ë¤ò¼ÂÁõ¤·¤Þ¤¹¡£


¼ÂÁõ¤Î¼ê½ç


¡¡£±¡¥Å¨´ÉÍýÍѤÎEnemy¥¯¥é¥¹¤òºîÀ®¤¹¤ë
¡¡£²¡¥EnemyÍÑ¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤ËEnemy¥¯¥é¥¹¤ò¥¢¥¿¥Ã¥Á¤·¡¢¥×¥ì¥Õ¥¡¥Ö²½¤¹¤ë¡£¥Ç¥Ð¥Ã¥°¤ò¹Ô¤¦
¡¡£³¡¥Enemy¥¯¥é¥¹¤ò½¤Àµ¤¹¤ë
¡¡£´¡¥GameManager¥¯¥é¥¹¤ò½¤Àµ¤¹¤ë
¡¡£µ¡¥¥²¡¼¥à¤ò¼Â¹Ô¤·¤ÆÆ°ºî¤ò³Îǧ¤¹¤ë


¿·¤·¤¯³Ø½¬¤¹¤ëÆâÍÆ


¡¡¡¦ifʸ¤Ë¤ª¤±¤ëbool·¿¤Î¾Êάµ­Ë¡
¡¡¡¦¾Êά²Äǽ¤Ê°ú¿ô¤ò»ý¤Ä¥á¥½¥Ã¥É¤òÄêµÁ¤¹¤ëÊýË¡¤È»ÈÍÑÊýË¡
¡¡¡¦¥á¥½¥Ã¥É¤Î°ú¿ô¤òÍøÍѤ·¤Æ¥¢¥µ¥¤¥ó¾ðÊó¤ò¼èÆÀ¤¹¤ëÊýË¡
¡¡¡¦»°¹à±é»»»Ò¤Ë¤è¤ë½èÍý
¡¡¡¦GameObject·¿¤Ç¤Ï¤Ê¤¤¡¢¼«ºî¥¯¥é¥¹¤òÍѤ¤¤¿¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤Î¥¤¥ó¥¹¥¿¥ó¥¹ÊýË¡


£±¡¥Å¨´ÉÍýÍѤÎEnemy¥¯¥é¥¹¤òºîÀ®¤¹¤ë

¡¡
¡¡Å¨Ìò¤Î¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤Ë¥¢¥¿¥Ã¥Á¤¹¤ë¥¯¥é¥¹¤òºîÀ®¤·¤Þ¤¹¡£

Enemy.cs

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



¡ãifʸ¤Ë¤ª¤±¤ëbool·¿¤Î¾Êάµ­Ë¡¡ä


¡¡bool·¿¤Ç¤Ïifʸ¤Î¾ò·ï¼°¤Ë¾Êάµ­Ë¡¤òÍѤ¤¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£
ÊÑ¿ô̾¤ò¤½¤Î¤Þ¤Þ¾ò·ï¼°¤Ëµ­ºÜ¤·¤¿¾ì¹ç¤Ë¤Ï true ¤Ç¤¢¤ë³Îǧ¤òµá¤á¡¢ÈÝÄê±é»»»Ò(!)¤òÀèƬ¤Ë¤Ä¤±¤ÆÊÑ¿ô̾¤òµ­ºÜ¤·¤¿¾ì¹ç¤Ë¤Ï false ¤Ç¤¢¤ë³Îǧ¤òµá¤á¤Þ¤¹¡£

¡¡if (isDebug) {¡¡ <= if (isDebug == true) ¤ÈƱ¤¸¤Ë¤Ê¤ê¤Þ¤¹
  ¡¡¡¡StartCoroutine(DestroyEnemy(3.0f));
  }

  if (!isDebug) {¡¡ <= if (isDebug == false) ¤ÈƱ¤¸¤Ë¤Ê¤ê¤Þ¤¹
  ¡¡¡¡StartCoroutine(DestroyEnemy(3.0f));
  }


¡ã¾Êά²Äǽ¤Ê°ú¿ô¤ò»ý¤Ä¥á¥½¥Ã¥É¤òÄêµÁ¤¹¤ëÊýË¡¤È»ÈÍÑÊýË¡¡ä


¡¡¾Êά²Äǽ¤Ê°ú¿ô¤È¤Ï¥Ç¥Õ¥©¥ë¥È°ú¿ô¤È¤â¸Æ¤Ð¤ì¤Þ¤¹¡£¥á¥½¥Ã¥É¤Ë°ú¿ô¤òÍÑ°Õ¤¹¤ëºÝ¤Ë¡¢¤¢¤é¤«¤¸¤á½é´üÃͤòÀßÄê¡Ê½é´ü²½¡Ë¤·¤Æ¤ª¤¯¤³¤È¤Ç
¤½¤Î°ú¿ô¤ò¾Êά¤·¤¿¾ì¹ç¤Ë¤Ï½é´üÃͤò»ÈÍѤ·¡¢¾Êά¤»¤º¤Ëµ­½Ò¤·¤¿¾ì¹ç¤Ë¤Ï¤½¤ÎÃͤò»ÈÍѤ¹¤ë¡¢¤È¤¤¤¦ÄêµÁ¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£

¡¡¤Ê¤ªº£²ó¤ÏÌá¤êÃͤΤ¢¤ë¥á¥½¥Ã¥É¤Ç»ÈÍѤ·¤Æ¤¤¤Þ¤¹¤¬¡¢Ìá¤êÃͤΤʤ¤ void ¤Î¥á¥½¥Ã¥É¤Ç¤âÍøÍѤǤ­¤Þ¤¹¡£½¤¾þ»Ò¤âprivate,public¤Ê¤É¤Ë´Ø·¸¤Ê¤¯ÍøÍѤǤ­¤Þ¤¹¡£

¡¡¡ãº£²ó¤Î¥±¡¼¥¹¤Î¾ì¹ç¤Î¥á¥½¥Ã¥É¤ÎÄêµÁ¡ä

private IEnumerator DestroyEnemy(float waitTime = 0.0f) {

¡¡Ä̾ï¤Î°ú¿ô¤È¤Ï°Û¤Ê¤ê¡¢·¿¡¢ÊÑ¿ô̾¤ÎÀë¸À¤Ë²Ã¤¨¤Æ¥¤¥³¡¼¥ë¤Ç½é´ü²½¤ò¹Ô¤Ã¤Æ¤¤¤Þ¤¹¡£
¤³¤ì¤¬¾Êά¤·¤¿°ú¿ô¤ÎÄêµÁ¤ÎÊýË¡¤Ë¤Ê¤ê¤Þ¤¹¡£¤Ê¤ª¡¢Ê£¿ô¤Î°ú¿ô¤ò»ý¤Ä¥á¥½¥Ã¥É¤Î¾ì¹ç¡¢¤³¤Î¾Êά½ñ¼°¤Ï¡¢¾Êά¤·¤Æ¤¤¤Ê¤¤°ú¿ô¤ÎÀë¸À¤¬½ª¤ï¤Ã¤Æ¤«¤é½ñ¤«¤Ê¤¤¤È¥¨¥é¡¼¤Ë¤Ê¤ê¤Þ¤¹¡£

¡¡¡ãÊ£¿ô¤Î°ú¿ô¤ò»ý¤Ä¾ì¹ç¤Î¥á¥½¥Ã¥É¤Ç¤Î¾Êά°ú¿ô¤ÎÄêµÁ¡ä

¡¡£±¡¥¥¨¥é¡¼¤Ë¤Ê¤é¤Ê¤¤¾ì¹ç(¾Êά¤·¤Æ¤¤¤Ê¤¤°ú¿ô¤ò½ñ¤¤¤¿¸å¤Ë¾Êά°ú¿ô¤òÄêµÁ¤¹¤ë)
¡¡private IEnumerator DestroyEnemy(int x, GameObject obj, float waitTime = 0.0f) {

¡¡private IEnumerator DestroyEnemy(int x, GameObject obj, float waitTime = 0.0f, bool isSwitch = true) {     // 2¤Ä°Ê¾å¤Î¾Êά¤â²Äǽ


¡¡£²¡¥¥¨¥é¡¼¤Ë¤Ê¤ë¾ì¹ç(¾Êά¤·¤Æ¤¤¤Ê¤¤°ú¿ô¤¬¾Êά°ú¿ô¤è¤ê¤â¸å¤í¤ËÄêµÁ¤µ¤ì¤Æ¤¤¤ë)
  private IEnumerator DestroyEnemy(int x, float waitTime = 0.0f, GameObject obj) {


¡¡¾Êά°ú¿ô¤ò»ý¤Ä¥á¥½¥Ã¥É¤ò¸Æ¤Ó½Ð¤¹Ì¿Îá¤Ë¤Ï£²¤Ä¤ÎÊýË¡¤¬¤¢¤ê¤Þ¤¹¡£
¾Êά°ú¿ô¤ò½ñ¤¤¤Æ(¾Êά¤»¤º¤Ë)¸Æ¤Ó½Ð¤¹ÊýË¡¤È¡¢¾Êά°ú¿ô¤ò½ñ¤«¤Ê¤¤¤Ç(¾Êά¤·¤Æ)¸Æ¤Ó½Ð¤¹ÊýË¡¤Ç¤¹¡£

  float waitTime = 3.0f;

¡¡¡ã¾Êά°ú¿ô¤ò¾Êά¤·¤Ê¤¤¾ì¹ç¤ÎÌ¿Îá¡ä
¡¡DestroyEnemy(waitTime);

¡¡¡ã¾Êά°ú¿ô¤ò¾Êά¤¹¤ë¾ì¹ç¤ÎÌ¿Îá¡ä
¡¡DestroyEnemy();

¡¡¾åµ­¤Î¾ì¹ç¤Ë¤Ï¡¢3.0f ¤¬°ú¿ô¤È¤·¤ÆÅϤµ¤ì¤Þ¤¹¡£
¡¡²¼µ­¤Î¾ì¹ç¤Ë¤Ï°ú¿ô¤¬¾Êά¤µ¤ì¤Æ¤¤¤Þ¤¹¤Î¤Ç¡¢¾Êά°ú¿ô¤Ç½é´ü²½¤·¤ÆÀë¸À¤·¤Æ¤¤¤ë 0.0f ¤¬°ú¿ô¤È¤·¤ÆÅϤµ¤ì¤Þ¤¹¡£

¡¡¾Êά°ú¿ô¤ÎÃͤòÍøÍѤ¹¤ë¤³¤È¤¬¤Û¤È¤ó¤É¤Ç¡¢¤¿¤Þ¤Ë°ú¿ô¤ò»ØÄꤷ¤ÆÅϤ¹¤è¤¦¤Ê¥á¥½¥Ã¥É¤Î¾ì¹ç¤Ë¤Ï¡¢
°ú¿ô¤ÎÃͤ¬É¬Íפʾì¹ç¤Ë¤À¤±¥á¥½¥Ã¥É¤Î°ú¿ô¤òµ­½Ò¤¹¤ì¤Ð¤è¤¤¤³¤È¤Ë¤Ê¤ê¤Þ¤¹¤Î¤Ç¡¢¤½¤ÎÅÔÅÙ¡¢°ú¿ô¤ò½ñ¤¯¼ê´Ö¤¬¾Ê¤±¤Þ¤¹¡£


£²¡¥EnemyÍÑ¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤ËEnemy¥¯¥é¥¹¤ò¥¢¥¿¥Ã¥Á¤·¤Æ¥Ç¥Ð¥Ã¥°¤ò¹Ô¤¦


¡¡EnemyÍѤΥ²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤Ë¡¢ºîÀ®¤·¤¿Enemy¥¯¥é¥¹¤ò¥¢¥¿¥Ã¥Á¤·¤Þ¤¹¡£
¥¤¥ó¥¹¥Ú¥¯¥¿¡¼¤ò³Îǧ¤·¡¢isDebugÊÑ¿ô¤Î¥¹¥¤¥Ã¥Á¤Ë¥Á¥§¥Ã¥¯¤òÆþ¤ì¤Æ true ¤Ë¤·¤Þ¤¹¡£
¤³¤ì¤Ç¥Ç¥Ð¥Ã¥°¥â¡¼¥É¤Ë¤Ê¤ê¡¢À¸À®¤µ¤ì¤¿Å¨¤Ï3Éøå¤Ë¼«Æ°Åª¤ËÇË´þ¤µ¤ì¤Þ¤¹¡£

EnemyÍÑ¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤Î¥¤¥ó¥¹¥Ú¥¯¥¿¡¼²èÁü



¡¡¥²¡¼¥à¤òµ¯Æ°¤·¡¢¼ÂºÝ¤Ë3Éøå¤ËŨ¤¬¥²¡¼¥à¤«¤éÇË´þ¤µ¤ì¤ë¤«¤ò¥Ç¥Ð¥Ã¥°¤·¤Æ³Îǧ¤·¤Þ¤¹¡£


¸¡¾ÚÆ°²è
https://gyazo.com/3f9c09142c908d750ac95e5bbaa683f3


¡¡µóÆ°¤ËÌäÂ꤬¤Ê¤±¤ì¤Ð¡¢¤³¤ÎEnemyÍÑ¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤ò¥×¥ì¥Õ¥¡¥Ö²½¤·¤Æ¤ª¤­¤Þ¤¹¡£
¥×¥ì¥Õ¥¡¥Ö¤Ë¤·¤¿¤é¥Ò¥¨¥é¥ë¥­¡¼¾å¤«¤é¤Ïºï½ü¤·¤Æ¤¯¤À¤µ¤¤¡£


£³¡¥Enemy¥¯¥é¥¹¤ò½¤Àµ¤¹¤ë


Enemy.cs

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



¡ã¥á¥½¥Ã¥É¤Î°ú¿ô¤òÍøÍѤ·¤Æ¥¢¥µ¥¤¥ó¾ðÊó¤ò¼èÆÀ¤¹¤ëÊýË¡¡ä


¡¡Â¾¤Î¥¯¥é¥¹¤Î¾ðÊó¤ò¥¯¥é¥¹Æâ¤ÇÍøÍѤ·¤¿¤¤¾ì¹ç¡¢¤½¤Îɳ¤Å¤±¤ÎÊýË¡¤Ë¤Ï¤¤¤¯¤Ä¤«¤Î¼êÃʤ¬¤¢¤ê¤Þ¤¹¡£
privateÊÑ¿ôÆâ¤ËÂåÆþ¤·¤¿¤¤¤Î¤Ç¤¢¤ì¤Ð¡¢É³¤Å¤±¤·¤¿¤¤¥¯¥é¥¹¤¬¥¢¥¿¥Ã¥Á¤µ¤ì¤Æ¤¤¤ë¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤òõ¤·¤Æ(Find¥á¥½¥Ã¥É¤òÍøÍѤ·¤Æ)¡¢¤½¤ì¤«¤éGetComponent¤¹¤ëÊýË¡¡¢
publicÊÑ¿ô¤Ç¤¢¤ì¤Ð¡¢¥¤¥ó¥¹¥Ú¥¯¥¿¡¼¤«¤é¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤ò¥É¥é¥Ã¥°¥¢¥ó¥É¥É¥í¥Ã¥×¤·¤Æ»öÁ°¤Ë¥¢¥µ¥¤¥ó¤·¤Æ¤ª¤¯ÊýË¡¤Ê¤É¤Ç¤¹¡£

¡¡º£²óEnemy¥¯¥é¥¹¤Ç¤Ï¡¢GameManager¥¯¥é¥¹¤Î¾ðÊó¤òÂåÆþ¤¹¤ë¤¿¤á¤ÎÊÑ¿ô¤òprivate¤ÇÍÑ°Õ¤·¤Æ¤¤¤Þ¤¹¡£
¤³¤¦¤¤¤Ã¤¿¾ì¹ç¤Ë¤Ï¥¤¥ó¥¹¥Ú¥¯¥¿¡¼¤Ë¤è¤ë»öÁ°¤Î¥¢¥µ¥¤¥ó¤¬¤Ç¤­¤Þ¤»¤ó¤¬¡¢Find¥á¥½¥Ã¥É¤òÍøÍѤ»¤º¤Ë¥¢¥µ¥¤¥ó¤ò¼èÆÀ¤¹¤ëÊýË¡¤Î£±¤Ä¤È¤·¤Æ¡¢
¥á¥½¥Ã¥É¤Î°ú¿ô¤ÎÃͤËGameManager¥¯¥é¥¹¤òÆϤ±¤Æ¤â¤é¤¦ÊýË¡¤¬¤¢¤ê¤Þ¤¹¡£

¡ã¸Æ¤Ð¤ì¤ë¥á¥½¥Ã¥É¡ä
    private GameManager gameManager;                      //¡¡¥¢¥µ¥¤¥ó¾ðÊó

    public void SetUpEnemy(GameManager gameManager) {     // <=  °ú¿ô¤ÇGameManager¥¯¥é¥¹¤¬ÆϤ¤¤Æ¤¤¤ë   
        this.gameManager = gameManager;                   // ¤½¤ì¤òÊÑ¿ô¤ËÂåÆþ¤¹¤ë
    }


¡ã¸Æ¤Ó½Ð¤¹Â¦¡ä
public class GameManager : MonoBehaviour

¡¡Enemy enemy;
  enemy.SetUpEnemy(this);¡¡¡¡¡¡¡¡¡¡// <= °ú¿ô¤È¤·¤Æthis(¤³¤Î¥±¡¼¥¹¤Ç¤ÏGameManager¼«¿È)¤òÅϤ·¤Æ¤¤¤ë

¡¡¤³¤Î¤è¤¦¤Ê¼êË¡¤òÍѤ¤¤ì¤Ð¡¢½èÍý¤Î½Å¤¤Find¥á¥½¥Ã¥É¤òÍøÍѤ¹¤ë¤³¤È¤Ê¤¯¡¢privateÊÑ¿ô¤Ë¥¢¥µ¥¤¥ó¾ðÊó¤òÂåÆþ¤¹¤ë¤³¤È¤¬²Äǽ¤Ç¤¹¡£
¥¯¥é¥¹Æâ¤ÇÍøÍѤ·¤¿¤¤³°Éô¥¯¥é¥¹¤Î¾ðÊó¤Ï¡¢¤½¤ì¤ò¤É¤Î¤è¤¦¤Ë¼èÆÀ¤¹¤ë¤«¡¢¤È¤¤¤¦Éôʬ¤ÇÀ߷פò¸¡Æ¤¤¹¤ë¤³¤È¤Ç¡¢¤³¤Î¤è¤¦¤Ê¤ä¤ê¤È¤ê¤Ë¤è¤ëÃͤÎÂåÆþ¤¬¤Ç¤­¤Þ¤¹¡£


¡¡

£´¡¥GameManager¥¯¥é¥¹¤ò½¤Àµ¤¹¤ë


¡¡GameManager¥¯¥é¥¹¤ò½¤Àµ¤·¤Æ¡¢Àè¤Û¤É¥×¥ì¥Õ¥¡¥Ö¤Ë¤·¤¿EnemyÍÑ¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤ò¥¹¥¯¥ê¥×¥È¤«¤é¼«Æ°À¸À®¤¹¤ë¤è¤¦¤Ë¤·¤Þ¤¹¡£
ºÇ½é¤ËAreaData¤Î¾ðÊó¤Ï»È¤ï¤º¤Ë¡¢»þ´Ö¤Î·Ð²á¤Ë¹ç¤ï¤»¤ÆϢ³¤ÇŨ¤¬¼«Æ°Åª¤ËÀ¸À®¤µ¤ì¤ë¤è¤¦¤Ë½èÍý¤ò¼ÂÁõ¤·¤Þ¤¹¡£

¡¡¤³¤Î¤È¤­¡¢À¸À®¤·¤¿Å¨¤Î¿ô¤Ï¥«¥¦¥ó¥È¤¹¤ë¤è¤¦¤ËÊÑ¿ô¤òÍÑ°Õ¤·¤Æ¡¢Å¨¤¬²¿ÂÎÀ¸À®¤µ¤ì¤¿¤«¤ò³Îǧ½ÐÍè¤ë¤è¤¦¤Ë¤·¤Þ¤¹¡£
¤¿¤À¤·À¸À®¿ô¤Î¾å¸ÂÃͤϤޤÀÀߤ±¤º¤Ë¡¢¤Þ¤º¤Ï¡¢¤É¤ó¤É¤ó¤ÈÀ¸À®¤µ¤ì¤ë½èÍý¤Ë¤·¤Æ¤ª¤­¤Þ¤¹¡£

¡¡¤Þ¤¿Å¨¤òÀ¸À®¤¹¤ëºÝ¤Î¥×¥ì¥Õ¥¡¥Ö¤Î·¿¤Ë¡¢GameObject·¿¤Ç¤Ï¤Ê¤¯¡¢Emeny·¿¤ò»ÈÍѤ·¤Æ¥¤¥ó¥¹¥¿¥ó¥¹¤ò¹Ô¤¤¤Þ¤¹¡£


GameManager.cs



¡ã»°¹à±é»»»Ò¤Ë¤è¤ë½èÍý¡ä

¡¡
¡¡»°¹à±é»»»Ò¤È¤¤¤¦½èÍý¤Ï¡¢if/elseʸ¤Îʬ´ô½èÍý¤ò1¹Ô¤Ç´Ê·é¤Ëµ­½Ò¤Ç¤­¤ë½ñ¼°¤Ç¤¹¡£

º£²ó¤Î»ÈÍÑÎã¤Ï¡¢¼¡¤Î¤è¤¦¤Ê¾ò·ï¤Îifʸ¤ò1¹Ô¤Ë¤Þ¤È¤á¤¿¤â¤Î¤Ç¤¹¡£

¡¡int direction = Random.Range(0, 2);
¡¡charaPos.x = direction == 0 ? charaPos.x += 2.5f : charaPos.x -= 2.5f;
¡¡¢­
    int direction = Random.Range(0, 2);
    
¡¡¡¡// ¥×¥ì¥¤¥ä¡¼¤Îº¸±¦¤É¤Á¤é¦¤ËŨ¤òÀ¸À®¤¹¤ë¤«¥é¥ó¥À¥à¤Ç·è¤á¤ë(0 = ±¦Êý¸þ¡¢1 = º¸Êý¸þ)
    if(direction == 0)
    {
         charaPos.x += 2.5f
    } 
    else 
    {
         charaPos.x -= 2.5f
    }

¡¡»°¹à±é»»»Ò¤Ï¤½¤Î̾Á°¤ÎÄ̤ê¤Ç¡¢£³¤Ä¤Î¹àÌܤ¬¤¢¤ê¤Þ¤¹¡£

¡Ú¾ò·ïʸ¡Û ? ¡Útrue¤À¤Ã¤¿¾ì¹çÊÖ¤¹Ãͤä½èÍý¡Û : ¡Úfalse¤À¤Ã¤¿¾ì¹çÊÖ¤¹Ãͤä½èÍý¡Û

¡¡±¦ÊդǤϡ¢¤³¤Î¾ò·ï¼°¤Ètrue¤Èfalse¤Î£³¤Ä¤Î¹àÌܤòÍÑ°Õ¤·¤Æ¡¢¤½¤Î·ë²Ì¤Ë¹ç¤ï¤»¤Æº¸ÊÕ¤ØÃͤòÂåÆþ¤·¤Þ¤¹¡£


»²¹Íµ­»ö
@crazy_travelerÍÍ
»²¹Í¤Ë¤Ê¤ë»°¹à±é»»»Ò
https://qiita.com/crazy_traveler/items/5fb5ec9568e...


¡ãGameObject·¿¤Ç¤Ï¤Ê¤¤¡¢¼«ºî¥¯¥é¥¹¤òÍѤ¤¤¿¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤Î¥¤¥ó¥¹¥¿¥ó¥¹ÊýË¡¡ä


¡¡¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤ò¥¹¥¯¥ê¥×¥È¤«¤éÀ¸À®¤¹¤ëºÝ¤Ë¤ÏGameObject·¿¤ÇÀë¸À¤·¤¿ÊÑ¿ô¤ËGameObject¤Ç¤¢¤ë¥×¥ì¥Õ¥¡¥Ö¤ò¥¢¥µ¥¤¥ó¤·¤ÆÍøÍѤ¹¤ë¤³¤È¤¬Â¿¤¤¤Ç¤¹¡£
¤³¤Î¤È¤­¡¢¿Æ¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤Ë¼«ºî¤·¤¿¥¯¥é¥¹(º£²ó¤ÏEnemy¥¯¥é¥¹)¤¬¥¢¥¿¥Ã¥Á¤µ¤ì¤Æ¤¤¤ë¾ì¹ç¤Ë¤Ï¡¢GameObject·¿¤Ç¤Ï¤Ê¤¯¡¢¤½¤Î¥¯¥é¥¹¤òÀë¸À¤·¤Æ
Ʊ¤¸¤è¤¦¤Ë¥×¥ì¥Õ¥¡¥Ö¤ò¥¢¥µ¥¤¥ó¤·¤Æ¥¤¥ó¥¹¥¿¥ó¥¹¤¹¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£

¡¡// ¤Þ¤À¥¨¥ê¥¢¤Î¥Ç¡¼¥¿¤Ï»È¤ï¤º¤ËŨ¤òÀ¸À®¡£À¸À®¤¹¤ëºÝ¤ËEnemy·¿¤Î¥×¥ì¥Õ¥¡¥Ö¤ò»ÈÍѤ¹¤ë¤Î¤Ç¡¢º¸ÊÕ¤ËÍÑ°Õ¤¹¤ëÊÑ¿ô¤Î·¿¤âEnemy·¿¤È¤·¤Æ¤¤¤ë
  Enemy enemy = Instantiate(enemyPrefab, generatePos, Quaternion.identity);

¡¡// Enemy·¿¤ÇÀ¸À®¤·¤ÆÊÑ¿ô¤ËÂåÆþ¤·¤Æ¤¤¤ë¤Î¤Ç¡¢¤¹¤°¤Ë¥á¥½¥Ã¥É¤Î¸Æ¤Ó½Ð¤·¤¬¤Ç¤­¤ë
¡¡enemy.SetUpEnemy(this); 

¡¡ÍøÅÀ¤Ï¥³¥á¥ó¥È¤Ë¤â¤¢¤ë¤è¤¦¤Ë¡¢GameObject·¿¤Ç¤Ï¤Ê¤¯¡¢Enemy¥¯¥é¥¹¤ÇÀ¸À®¤ò¤·¤Æ¤¤¤ë¤Î¤Ç¡¢¤½¤ÎÊÑ¿ô¤ò»È¤¦¤È¤¹¤°¤Ë¥á¥½¥Ã¥É¤Î¸Æ¤Ó½Ð¤·¤¬¤Ç¤­¤Þ¤¹¡£
¤Ä¤Þ¤ê¡¢GameObject·¿¤ÇÀ¸À®¤·¤Æ¤¤¤¿ºÝ¤Ë¡¢¥á¥½¥Ã¥É¤Î¸Æ¤Ó½Ð¤·¤ËɬÍפˤʤäƤ¤¤¿¥¯¥é¥¹¼èÆÀ¤ò¤¹¤ëGetComponet¤Î½èÍý¤¬ÉÔÍפˤʤäƤ¤¤Þ¤¹¡£

¡¡// GameObject·¿¤ÇÀ¸À®
¡¡GameObject enemyObj = Instantiate(enemyPrefab, generatePos, Quaternion.identity);

¡¡// Enemy¥¯¥é¥¹¤Î¥á¥½¥Ã¥É¤ò¸Æ¤Ó½Ð¤¹¤Ë¤Ï¡¢GameObject·¿¤Ç¤Ï¸Æ¤Ó½Ð¤»¤Ê¤¤¤Î¤Ç¡¢Enemy¥¯¥é¥¹¤ò¼èÆÀ¤¹¤ëɬÍפ¬¤¢¤ë
¡¡Emeny enemy = enemyObj.GetComponent<Enemy>()

¡¡// ¥á¥½¥Ã¥É¤Î¸Æ¤Ó½Ð¤·
¡¡enemy.SetUpEnemy(this);  

¡¡GetComponent¥á¥½¥Ã¥É¤Î½èÍý¤Ï¤¢¤Þ¤ê·Ú¤¤½èÍý¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡£¤Þ¤¿GameObject·¿¤ÎÊÑ¿ô¤âGetComponentÍѤˤ虜¤ï¤¶ÍÑ°Õ¤·¤Æ¤¤¤ëÊÑ¿ô¤Ç¤¹¡£
Ũ¤ò¤¿¤¯¤µ¤óÀ¸À®¤¹¤ë¤è¤¦¤Êº£²ó¤Î¾ì¹ç¤Ë¤Ï¡¢Å¨¤òÀ¸À®¤¹¤ëºÝ¤Ë¡¢¤³¤Î¤è¤¦¤Ë;ʬ¤ÊÊÑ¿ô¤äGetComponent¤ò¤·¤Ê¤¤¤ÇºÑ¤àÊýË¡¤ÇÀ߷פ·¡¢¼ÂÁõ¤·¤Æ¤ª¤¤¤¿Êý¤¬¤è¤¤¤Ç¤·¤ç¤¦¡£


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


¡¡GameManager¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤òÁªÂò¤·¡¢¥¤¥ó¥¹¥Ú¥¯¥¿¡¼¤ò³Îǧ¤·¤Þ¤¹¡£
¥¢¥µ¥¤¥ó¾ðÊó¤¬Äɲ䵤ì¤Æ¤¤¤Þ¤¹¤¬¡¢EnemyPrefab°Ê³°¤Î¾ðÊó¤Ï¤¹¤Ù¤Æ¥²¡¼¥à¤Î¼Â¹Ô¤ÈƱ»þ¤ËÂåÆþ¤µ¤ì¤Þ¤¹¤Î¤Ç
ProjectÆâ¤Ë¤¢¤ëEnemyÍÑ¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤òEnemyPrefab¤Ë¥É¥é¥Ã¥°¥¢¥ó¥É¥É¥í¥Ã¥×¤·¤Æ¥¢¥µ¥¤¥ó¤·¤Þ¤¹¡£

¡¡Enemy¥¯¥é¥¹¤¬¥¢¥¿¥Ã¥Á¤µ¤ì¤Æ¤¤¤ë¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤Ç¤¢¤ì¤Ð¡¢º£¤Þ¤Ç¤ÎGameObject·¿¤ÈƱ¤¸¤è¤¦¤Ë¥¢¥µ¥¤¥ó½ÐÍè¤Þ¤¹¡£
EnemyPrefabÊÑ¿ô¤Î¥¢¥µ¥¤¥ó¾ðÊó¤â¡¢None(GameObject)¤Ç¤Ï¤Ê¤¯¡¢None(Enemy)¤È¡¢·¿¤Î»ØÄ꤬¤¤¤Ä¤â¤È°Û¤Ê¤Ã¤Æ¤¤¤ë¤³¤È¤¬Ê¬¤«¤ê¤Þ¤¹¡£


GameManager¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤Î¥¤¥ó¥¹¥Ú¥¯¥¿¡¼²èÁü


¡¡
¡¡¥×¥ì¥Õ¥¡¥Ö¤Î¥¢¥µ¥¤¥ó¤¬½ªÎ»¤·¤¿¤é¥²¡¼¥à¤ò¼Â¹Ô¤·¤ÆÆ°ºî¤ò³Îǧ¤·¤Þ¤¹¡£
AppearTime¤ÎÃͤ¬¼«Æ°Åª¤Ë¥é¥ó¥À¥àÃͤ¬ÀßÄꤵ¤ì¤Æ¡¢GenerateTimer¤¬¥«¥¦¥ó¥È¥¢¥Ã¥×¤·¤Þ¤¹¡£
GenerateTimer¤ÎÃͤ¬AppearTime¤òĶ¤¨¤¿¤éŨ¤¬À¸À®¤µ¤ì¤Æ¡¢GenerateCount¤¬1¤ÄÁý¤¨¤Þ¤¹¡£

¡¡¤Þ¤¿¼¡¤ÎÀ¸À®¤Ë¸þ¤±¤ÆAppearTime¤Ë¿·¤·¤¤Ãͤ¬Æþ¤ê¡¢GenerateTimer¤â0¤ËÌᤵ¤ì¤Þ¤¹¡£
¤½¤·¤ÆºÆÅÙ¥«¥¦¥ó¥È¥¢¥Ã¥×¤ò¤·¤Æ¡¢¤È¤¤¤¦·Á¤Î¥µ¥¤¥¯¥ë¤Ë¤Ê¤ê¤Þ¤¹¡£

¡¡¤³¤Î½èÍý¤¬¥²¡¼¥à¼Â¹ÔÃ椺¤Ã¤È·«¤êÊÖ¤µ¤ì¤ì¤ÐÀ®¸ù¤Ç¤¹¡£Å¬µ¹¤Ê¥¿¥¤¥ß¥ó¥°¤Ç¥²¡¼¥à¤ò»ß¤á¤Æ¤¯¤À¤µ¤¤¡£


¸¡¾ÚÆ°²è¡¡GenerateTimer¤¬¥«¥¦¥ó¥È¥¢¥Ã¥×¤·¡¢AppearTime¤òĶ¤¨¤¿¤éŨ¤¬À¸À®¤µ¤ì¤ë¡£GenerateCount¤¬ 1 Áý¤¨¤ë¡£
https://gyazo.com/1aeebc51b84311b13db69767a9c37520


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