コード例 #1
0
    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);
        }
    }
コード例 #2
0
    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);
            }
        }
    }
コード例 #3
0
    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);
        }
    }