Пример #1
0
 void Update()
 {
     if (LightControllor.isNight())
     {
         float enemyRatial = Random.Range(0f, 1f);
         if (Enemies.Count < Const.numEnemy && Random.Range(0, 1f) > 0.7f)
         {
             pushNewEnemy(getEnemyIdByRatial(enemyRatial));
         }
         for (int i = 0; i < Enemies.Count; i++)
         {
             // Auto move toward main actor
             float            enemyDis     = calDistanceWithMainActor(Enemies[i]);
             Const.GameItemID monsterId    = ItemMap.getItemsID(Enemies[i].name);
             Creature         creatureInfo = ItemMap.getCreatureInfo(monsterId);
             if (enemyDis < creatureInfo.attackDistance)
             {
                 if (!clickEvent.modestate)
                 {
                     mainActor.GetComponent <LiveManager>().attack(creatureInfo.attackPower);
                 }
                 if (monsterId == Const.GameItemID.Slime)
                 {
                     BoxCollider col  = Enemies[i].GetComponent <BoxCollider>();
                     SlimeWeapon weap = Enemies[i].GetComponent <SlimeWeapon>();
                     Rigidbody   rig  = Enemies[i].GetComponent <Rigidbody>();
                     Enemies[i].transform.localScale = new Vector3(7, 7, 7);
                     col.isTrigger  = true;
                     weap.triggered = true;
                     rig.useGravity = false;
                 }
             }
             else if (enemyDis < creatureInfo.trackDistance)
             {
                 Enemies[i].GetComponent <AutoMove>().setTarget(mainActor.transform.position);
             }
             // Play audio
             AudioSource audio = Enemies[i].GetComponent <AudioSource>();
             if (enemyDis < creatureInfo.audioDistance)
             {
                 if (!audio.isPlaying)
                 {
                     audio.Play(0);
                 }
                 audio.volume = 1 - enemyDis / creatureInfo.audioDistance;
             }
             else
             {
                 audio.Pause();
             }
             // Destroy the creature if they died
             LiveManager monster = Enemies[i].GetComponent <LiveManager>();
             if (monster.live <= 0)
             {
                 Destroy(Enemies[i].gameObject);
                 Enemies.RemoveAt(i);
             }
         }
     }
     else if (Random.Range(0f, 1f) > 0.7)
     {
         int lastIndex = Enemies.Count;
         if (lastIndex > 0)
         {
             Destroy(Enemies[lastIndex - 1].gameObject);
             Enemies.RemoveAt(lastIndex - 1);
         }
     }
 }