Exemplo n.º 1
0
    public override void Update(EnemyAgent agent)
    {
        //check if player is in his way if yes follow player
        if (Vector3.Distance(agent.GetNavMeshAgent().destination, agent.transform.position) < agent.GetAttackRange() + 0.5f)
        {
            agent.SetState(AttackBaseState.GetInstance());
        }
        RaycastHit hit;

        if (Physics.SphereCast(agent.transform.position + new Vector3(0.5f, 0.5f, 0.5f), 0.5f, agent.transform.forward, out hit, agent.GetFollowRange()))
        {
            if (hit.collider.tag == "Player")
            {
                agent.SetState(FollowPlayerState.GetInstance());
            }
        }
    }
    public override void Update(EnemyAgent agent)
    {
        //update position of the player
        agent.SetPlayerTarget();

        if (Vector3.Distance(agent.GetNavMeshAgent().destination, agent.transform.position) < agent.GetAttackRange() + 0.5f)
        {
            agent.SetState(AttackState.GetInstance());
        }
        if (Vector3.Distance(agent.GetNavMeshAgent().destination, agent.transform.position) > agent.GetFollowRange() + 0.5f)
        {
            if (agent.GetIsWaveEnemy() == false)
            {
                agent.SetState(PatrolState.GetInstance());
            }
            else
            {
                agent.SetState(ChargeBaseState.GetInstance());
            }
        }
    }
Exemplo n.º 3
0
    public override void Update(EnemyAgent agent)
    {
        if (Vector3.Distance(agent.GetNavMeshAgent().destination, agent.transform.position) < 2.5f)
        {
            agent.UpdateWaypoint();
        }
        RaycastHit hit;

        if (Physics.SphereCast(agent.transform.position + new Vector3(0.5f, 0f, 0.5f), 1f, agent.transform.forward, out hit, agent.GetFollowRange()))
        {
            if (hit.collider.tag == "Player")
            {
                agent.SetState(FollowPlayerState.GetInstance());
            }
        }
    }