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); } } }