public override AIAction Execute(AIBrain brain) { string msg = "+MV:"; GameObject target = null; switch (follow) { case FollowTarget.Player: target = GetPlayer(); break; case FollowTarget.Target: target = brain.character.target.gameObject; break; } if (target) { Vector3 dir = brain.character.transform.position - target.transform.position; dir.y = 0; dir.Normalize(); Vector3 targetPoint = target.transform.position + dir * distance; brain.MoveTo(targetPoint); msg += "(" + (int)targetPoint.x + "," + (int)targetPoint.z + ")"; } brain.AddDebugMsg(msg); return(this); }
public override float Evaluate(AIBrain brain) { decided = true; isTrue = IsCondition(condition, brain.character); AIAction node = isTrue ? nodeTrue : nodeFalse; brain.AddDebugMsg("-BR(" + isTrue + ")" + node.name); return(node.Evaluate(brain)); }
public override float Evaluate(AIBrain brain) { // if our condition is false, don't do it if (!IsCondition(condition, brain.character)) { brain.AddDebugMsg("-PW(not)" + power.name); return(0); } // we can use the power, so evaluate it return(power.Evaluate(brain, targetCondition)); }
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)); }
public override float Evaluate(AIBrain brain) { GameObject target = brain.character.target ? brain.character.target.gameObject : null; if (follow == FollowTarget.Player) { target = GetPlayer(); } if (target == null) { return(0); } float dist = Mathf.Abs(distance - Vector3.Distance(target.transform.position, brain.transform.position)); dist = Mathf.Max(dist - 1, 0); brain.AddDebugMsg("-FW(" + dist * 0.1f + ")"); return(dist * 0.1f); }
public override AIAction Execute(AIBrain brain) { brain.AddDebugMsg("+PW:" + power.name); return(power.Execute(brain)); }
public override AIAction Execute(AIBrain brain) { brain.AddDebugMsg("+PATROL"); brain.patrolling.Patrol(brain); return(this); }