// Update is called once per frame void Update() { if (enemy == null) { findEnemyTimer += Time.deltaTime; if (findEnemyTimer >= findEnemyIdleTime) { findEnemyTimer = 0; findEnemy(); } } if (enemy != null) { float dist = Vector3.Distance(this.transform.position, enemy.transform.position); if (dist <= range) { Quaternion dir = Quaternion.LookRotation(enemy.transform.position - this.transform.position); turret.rotation = Quaternion.Euler(0, dir.eulerAngles.y + 90, 0); } else { enemy = null; } } }
void AddMonsterAI(GameObject go) { if (BattleUtil.IsBoss(monsterData)) { go.tag = Tag.boss; UnityUtil.AddComponetIfNull <Boss_AI>(go); } else { Monster_AI mAI = null; switch (SceneBaseManager.instance.sceneType) { case SceneType.TP: mAI = UnityUtil.AddComponetIfNull <TotalPoints_AI>(go); break; case SceneType.KV: case SceneType.TD: case SceneType.ACT_GOLD: case SceneType.ACT_EXP: mAI = UnityUtil.AddComponetIfNull <EscoerMonster_AI>(go); mAI.IsElite = isElite; break; case SceneType.ES: mAI = UnityUtil.AddComponetIfNull <ToEscape_AI>(go); break; case SceneType.MB3: mAI = UnityUtil.AddComponetIfNull <MonsterAI3v3>(go); break; default: mAI = UnityUtil.AddComponetIfNull <Monster_AI>(go); break; } //switch(SceneManager.GetActiveScene().name) //{ // case GameLibrary.PVP_Moba: // mAI.chaseTime = 1f; // mAI.backPositon = BackPosition.chaseStartPos; // break; // default: // mAI.isBackRestore = true; // mAI.backPositon = BackPosition.bornPos; // break; //} mAI.autoPoints = autos; } }
void ChangeTarget(CharacterState cs) { for (int i = 0; i < SceneTotalPoints.instance.agents.size; i++) { Monster_AI mAI = SceneTotalPoints.instance.agents[i].GetComponent <Monster_AI>(); if (!mAI || null == mAI.targetCs || mAI.targetCs.state != Modestatus.Tower) { continue; } if (SceneTotalPoints.instance.agents[i].groupIndex == thisCs.groupIndex) { mAI.targetCs = cs; } } }
void findEnemy() { Monster_AI[] monsters = FindObjectsOfType <Monster_AI>(); int nearest = -1; float distance = Mathf.Infinity; for (int i = 0; i < monsters.Length; i++) { float thisDist = Vector3.Distance(this.transform.position, monsters[i].transform.position); if (thisDist < distance && thisDist <= range) { nearest = i; distance = thisDist; } } if (nearest >= 0) { enemy = monsters [nearest]; } }