public override AIAction Execute(AIBrain brain) { Evaluate(brain); string msg = "+EV:" + (bestBehaviour ? bestBehaviour.name : "null") + "(" + bestEvaluation + ")"; brain.AddDebugMsg(msg); if (bestBehaviour) { bestBehaviour.Execute(brain); } return(bestBehaviour); }
public override AIAction Execute(AIBrain brain) { if (!decided) { isTrue = IsCondition(condition, brain.character); } AIAction node = isTrue ? nodeTrue : nodeFalse; brain.AddDebugMsg("+BR:" + isTrue + " " + node.name); decided = false; return(node.Execute(brain)); }
// Update is called once per frame void Update() { if (character.dead) { ai.SetTarget(null); return; } if (character.isHeld()) { ai.SetTarget(null); } if (countDown > 0) { countDown -= Time.deltaTime; if (character.isHeld() == false && character.target) { character.FaceTarget(); } if (debugCountdown) { debugCountdown.text = "" + countDown; } } else { if (character.isHeld()) { countDown = 1; } else { UpdateEnemies(); if (showDebug) { //Debug.Log(RPGSettings.instance.GetHUD(character).debugText.text); RPGSettings.instance.GetHUD(character).ClearDebugText(); foreach (Character enemy in enemies) { RPGSettings.instance.GetHUD(enemy).ClearDebugText(); } foreach (Character ally in allies) { RPGSettings.instance.GetHUD(ally).ClearDebugText(); } } closingRange = 0; //Debug.Log("THINKING..."); Power p = rootNode as Power; if (p) { p.npcTarget = null; } AIAction node = rootNode ? rootNode.Execute(this): null; //Debug.Log("...THINKING"); countDown = node == null ? 3 : node.GetDuration(); } } if (character.activePower) { character.activePower.OnUpdate(character); } if (closingRange > 0 && Power.WithinRange(character, closingRange, true)) { countDown = 0; } }