public override void MakeDecision(AgentHandler agentScript) { Vector3 directionToPlayer = GameConstants.Instance.PlayerObject.transform.position - agentScript.transform.position; if (directionToPlayer.magnitude <= agentScript.GetAttackRange()) { RunChildDecision(agentScript, true); } else { RunChildDecision(agentScript, false); } }
public override void Reason(GameObject player, AgentHandler agent) { Vector3 directionToPlayer = GameConstants.Instance.PlayerObject.transform.position - agent.transform.position; if (!Physics.Raycast(agent.transform.position, directionToPlayer.normalized, directionToPlayer.magnitude, LayerMask.GetMask("Default"))) { if (directionToPlayer.magnitude <= agent.GetAttackRange()) { agent.FSMTransitionPassthrough(fsmTransition.ToAttack); } else { agent.FSMTransitionPassthrough(fsmTransition.ToChase); } } }
public override void MakeDecision(AgentHandler agentScript) { if (agentScript.GetEnergyRegenTimer() >= agentScript.TimeToRegenEnergy) { agentScript.ChangeAgentEnergyBy(1); agentScript.SetEnergyRegenTimer(0.0f); } Vector3 directionToPlayer = GameConstants.Instance.PlayerObject.transform.position - agentScript.transform.position; if (directionToPlayer.magnitude <= agentScript.GetAttackRange()) { RunChildDecision(agentScript, true); } else { RunChildDecision(agentScript, false); } }