public override void MakeDecision(AgentHandler agentScript) { Vector3 directionToPlayer = GameConstants.Instance.PlayerObject.transform.position - agentScript.transform.position; if (directionToPlayer.magnitude >= agentScript.GetTargetTooCloseRange() && directionToPlayer.magnitude <= agentScript.GetAttackRange()) { RunChildDecision(agentScript, true); } else { RunChildDecision(agentScript, false); } }
public override void Act(GameObject player, AgentHandler agent) { agent.mState = "Attack"; //Attack the Player agent.BoidController.SetTarget(player.transform.position); agent.BoidController.SetShouldFlock(false); float range = agent.GetTargetTooCloseRange(); if ((range * range) > (player.transform.position - agent.transform.position).sqrMagnitude) { agent.BoidController.FleePoint(player.transform.position, 5f); } EditableTree BasicAgentAttackTree = agent.GetBasicAgentDecisionTree(); if (BasicAgentAttackTree != null) { BasicAgentAttackTree.mRoot.MakeDecision(agent); } }