public override Etat Suivant() { Automate_Poursuiveur automate = _automate as Automate_Poursuiveur; Etat res = this; //Si le gardien à le souafle if (Souafle.Possesseur != null) { Player possesseur = Souafle.Possesseur.GetComponent <Player>(); if (possesseur.Joueur.Poste == Poste.GARDIEN) { //Son gardien a le souafle if (possesseur.Joueur.Club == automate.Joueur.Joueur.Club) { res = new Etat_Poursuiveur_SeDemarquerGardien(automate); } } if (possesseur == automate.Joueur) { res = new Etat_Poursuivre_Avancer(automate); } } else { if (Math.Abs(Vector3.Distance(Souafle.Objet.transform.position, automate.Joueur.transform.position)) < 15) { res = new Etat_Poursuivreur_AllerVersSouafle(automate); } } return(res); }
public override Etat Suivant() { Automate_Poursuiveur automate = _automate as Automate_Poursuiveur; Etat res = this; if (Souafle.Possesseur == null) { if (Math.Abs(Vector3.Distance(Souafle.Objet.transform.position, automate.Joueur.transform.position)) < 10) { res = new Etat_Poursuivreur_AllerVersSouafle(automate); } } else { Player p = Souafle.Possesseur.GetComponent <Player>(); if (p.Joueur.Poste != Poste.GARDIEN && p.Joueur.Club == automate.Joueur.Joueur.Club) { res = new Etat_Poursuiveur_SeDemarquer(automate); } if (p == automate.Joueur) { res = new Etat_Poursuivre_Avancer(automate); } } return(res); }
public override Etat Suivant() { Automate_Poursuiveur automate = base._automate as Automate_Poursuiveur; Etat res = this; if (Souafle.Possesseur == automate.Joueur.gameObject) { res = new Etat_Poursuivre_Avancer(automate); } //Quelqu'un d'autre à le souafle else if (Souafle.Possesseur != null) { Player possesseur = Souafle.Possesseur.GetComponent <Player>(); //Il est dans son équipe if (possesseur.Joueur.Club == automate.Joueur.Joueur.Club) { if (UnityEngine.Random.Range(0, 1) == 0) { res = new Etat_Poursuiveur_SeDemarquer(automate); } else { res = new Etat_Poursuiveur_Approcher(automate); } } //Il n'est pas dans son équipe else { res = new Etat_Poursuiveur_Marquage(automate); if (Math.Abs(Vector3.Distance(Souafle.Objet.transform.position, automate.Joueur.transform.position)) < 5) { res = new Etat_Poursuivreur_AllerVersSouafle(automate); } } if (possesseur.Joueur.Poste == Poste.GARDIEN) { //Son gardien a le souafle if (possesseur.Joueur.Club == automate.Joueur.Joueur.Club) { res = new Etat_Poursuiveur_SeDemarquerGardien(automate); } //Le gardien adverse a le souafle else { res = new Etat_Poursuiveur_Marquage(automate); } } } else //Pas encore de possesseur { if (Math.Abs(Vector3.Distance(automate.Joueur.transform.position, Souafle.Objet.transform.position)) > 5) { foreach (Player p in GameObject.FindObjectsOfType <Player>()) { //Si un poursuiveur de son équipe est proche du souafle, alors il se démarque préventivement if (p.Joueur.Poste == Poste.POURSUIVEUR && p.Joueur.Club == automate.Joueur.Joueur.Club && Math.Abs(Vector3.Distance(p.transform.position, Souafle.Objet.transform.position)) < 5) { res = new Etat_Poursuiveur_SeDemarquer(automate); } } } } return(res); }