private void Awake() { this.controller = GameObject.Find("BattleController").GetComponent <GameState_Controller>(); this.field = transform.parent.GetComponent <Player_UI>(); this.agentName = field.GetName(); this.currentState = AI_States.Idle; this.previousState = MainGameStates.SetupGame; this.updateNeeded = false; }
// Update is called once per frame void Update() { StopEngines(); MoveToDestionation(); ShootThePlayer(); if (state == AI_States.AIS_IDLE) { } else if (state == AI_States.AIS_ATTACK) { if (live < 30) { state = AI_States.AIS_ESCAPE; } } else if (state == AI_States.AIS_ESCAPE) { } }
private void CheckForTurn() { //Ha az aktív kulcs az övé és az aktuális fázisban még nem váltottunk, illetve engedélyezett az akció if (this.playerKey == controller.GetCurrentKey() && (controller.GetGameState() != previousState) && GameState_Controller.readyForAction) { //Fázis meghatározása switch (controller.GetGameState()) { case MainGameStates.SetStat: this.currentState = AI_States.ChooseStat; break; case MainGameStates.SummonCard: this.currentState = AI_States.SummonCard; break; case MainGameStates.NormalSkills: this.currentState = AI_States.DecideSkill; break; default: this.currentState = AI_States.Idle; break; } previousState = controller.GetGameState(); updateNeeded = true; } }
void BreakAway() { ai_state = AI_States.Fleeing; breakingAway = true; invokedBreakAway = false; }
// Update is called once per frame void Update() { distToTarget = Vector3.Distance(target.position, transform.position); angle = Vector3.Angle(rigidbody.velocity, target.position - transform.position); switch (ai_type) { case AI_Types.FlyBy: if (breakingAway) { if (distToTarget < maxRange) ai_state = AI_States.Fleeing; else { ai_state = AI_States.Hunting; breakingAway = false; } } else { if (distToTarget > weaponsRange) ai_state = AI_States.Hunting; if (distToTarget <= weaponsRange) { //if (distToTarget <= minRange) //{ // ai_state = AI_States.StopAndAttack; // Invoke("BreakAway", timeToBreakaway); //} //else //{ ai_state = AI_States.AttackMove; if (!invokedBreakAway) { Invoke("BreakAway", timeToBreakaway); invokedBreakAway = true; } //} } } break; case AI_Types.Assassin: if (distToTarget < sightRange) { spotted = true; GameObject missionEnemy = missionController.missionEnemies.FirstOrDefault(e => e == this.gameObject); if(missionEnemy) { missionController.missionEnemies .Where(e => e != this.gameObject) .ToList() .ForEach(e => e.GetComponent<AI_Controller>().spotted = true); } } if (spotted) { ai_type = AI_Types.FlyBy; //if (distToTarget > weaponsRange) // ai_state = AI_States.Hunting; //if (distToTarget <= weaponsRange) //{ // if (distToTarget <= minRange) // { // ai_state = AI_States.StopAndAttack; // Invoke("BreakAway", timeToBreakaway); // } // else // { // ai_state = AI_States.AttackMove; // Invoke("BreakAway", timeToBreakaway); // } //} } break; case AI_Types.Vulture: break; default: break; } }
void Start() { missionController = GameObject.FindObjectOfType<MissionController>(); switch (ai_type) { case AI_Types.FlyBy: ai_state = AI_States.Hunting; break; case AI_Types.Assassin: ai_state = AI_States.Waiting; break; case AI_Types.Vulture: ai_state = AI_States.Waiting; break; default: break; } attacking = false; }