protected override bool onUpdate(float deltaTime) { GameManager.getInstance().setCameraFocus(getAnimal().transform); Animal a = getAnimal(); if (!goAtk && Vector2.Distance(a.GetComponent <Transform>().position, cible.GetComponent <Transform>().position) <= 1) { goAtk = true; tailleInitiale = getAnimal().transform.localScale; getAnimal().faceTo(cible); getAnimal().fd(0.001f, false, false); } if (goAtk) { if (a.animationAttaque(cible, a.getFaceToDirection(cible.transform.position))) { getAnimal().GetComponentInChildren <Voice>().makeSound(getAnimal().getIdentity(), SoundInformation.WolfAttack); GameManager.getInstance().setGameLost("Un loup beta s'est rebellé!"); getActionPendlingList().removeAction(this); return(true); } return(true); } a.setAgentToDontDodge(cible); a.faceTo(cible); a.wiggle(getAnimal().vitesse, 2); return(true); }
public override void vivre() { base.vivre(); Loup loup = ((Loup)agent); if (Loup.GESTION_FAIM) { if (loup.faim <= loup.FAIM_MAX / 2) { List <MemoryBloc> memoryBlocs = new List <MemoryBloc>(loup.GetComponent <Memory>().getMemoyBlocs()); Animal plusProcheCadavre = null; for (int i = 0; i < memoryBlocs.Count; ++i) { Animal animal = memoryBlocs[i].getEntity() as Animal; if (animal != null) { if (animal.estMort()) { if (animal.quantiteDeViande > 0) { if (plusProcheCadavre == null) { plusProcheCadavre = animal; } else if (Vector2.Distance(plusProcheCadavre.transform.position, agent.transform.position) > Vector2.Distance(animal.transform.position, agent.transform.position)) { plusProcheCadavre = animal; } } } } } if (plusProcheCadavre != null) { A_SeNourrir newAction = new A_SeNourrir(plusProcheCadavre); A_SeNourrir actionNourrirPrecedente = actionList.getFirstActionWithSameType <A_SeNourrir>(); if (actionNourrirPrecedente == null) { actionList.addAction(newAction); } else if (actionNourrirPrecedente.getDistanceFrom(agent.transform.position) > newAction.getDistanceFrom(agent.transform.position)) { actionList.removeAction(actionNourrirPrecedente); actionList.addAction(newAction); } } } loup.faim -= Time.deltaTime; if (loup.faim <= loup.FAIM_MAX / 2) { loup.displayStaticEmoticon(loup.hungryEmoticonSprite); } if (loup.faim <= 0) { loup.blesse(-loup.faim); loup.faim = 0; } } actionList.addAction(new A_Promenade(((Animal)agent).vitesse)); if (actionList.size() == 1) //Si l'agent ne fait que se promener et qu'il s'embête ... ajout d'une action d'occupation aléatoire spécifiée par randomAction() { compteurActiviteAleatoire -= Time.deltaTime; if (compteurActiviteAleatoire <= 0) { randomAction(); compteurActiviteAleatoire = Random.Range(10, 50); } } }