Exemplo n.º 1
0
    public void StateUpdate()
    {
        if (myMaster.pathObject != null)
        {
            if (myMaster.agent.remainingDistance <= myMaster.distanceToTurn)
            {
                myMaster.UpdatePath();
                myMaster.agent.SetDestination(myMaster.path[myMaster.pathCpt].position);
            }
        }
        else
        {
            if (myMaster.agent.remainingDistance <= 0.1)
            {
                myMaster.tr.SetPositionAndRotation(myMaster.startPos, myMaster.startRot);
                myMaster.stateMachine.ChangeState(myMaster.idle);
                return;
            }
        }

        angle = Vector3.SignedAngle(myMaster.tr.forward, myMaster.agent.destination - myMaster.tr.position, myMaster.tr.up);
        myMaster.animator.SetFloat("turn", angle);

        myMaster.LookForPlayer();
        myMaster.animator.SetBool("isDetectingBlank", myMaster.playerDetected);

        if (myMaster.playerDetected)
        {
            myMaster.stateMachine.ChangeState(myMaster.chase);
        }
    }
Exemplo n.º 2
0
    public void StateUpdate()
    {
        timeInState += Time.deltaTime;

        if (timeInState >= timeToDetect)
        {
            myMaster.LookForPlayer();
        }

        myMaster.animator.SetBool("isDetectingBlank", myMaster.playerDetected);

        angle = Vector3.SignedAngle(myMaster.tr.forward, myMaster.agent.destination - myMaster.tr.position, myMaster.tr.up);
        myMaster.animator.SetFloat("turn", angle);

        //Detection
        if (myMaster.playerDetected)
        {
            myMaster.stateMachine.ChangeState(myMaster.chase);
        }

        else if (myMaster.agent.remainingDistance <= 0.5f)
        {
            myMaster.stateMachine.ChangeState(myMaster.patrol);
        }
    }
Exemplo n.º 3
0
    public void StateUpdate()
    {
        timeInState += Time.deltaTime;

        myMaster.LookForPlayer();
        myMaster.animator.SetBool("isDetectingBlank", myMaster.playerDetected);

        //Regarde le joueur en x,z
        if (myMaster.playerDetected && timeInState < timeToKill)
        {
            Vector3 lookAtPos = GameManager.instance.currentAvatar.tr.position;
            lookAtPos.y = myMaster.tr.position.y;
            myMaster.tr.LookAt(lookAtPos);
        }

        //Detection
        if (!myMaster.playerDetected)
        {
            myMaster.searchDestination = GameManager.instance.currentAvatar.tr.position;
            myMaster.stateMachine.ChangeState(myMaster.search);
        }

        //Optimisation de navMesh
        cpt++;

        if (cpt % 10 == 0)
        {
            myMaster.agent.SetDestination(GameManager.instance.currentAvatar.tr.position);
        }

        angle = Vector3.SignedAngle(myMaster.tr.forward, myMaster.agent.destination - myMaster.tr.position, myMaster.tr.up);
        myMaster.animator.SetFloat("turn", angle);

        //Kill selon la distance
        if (Vector3.Distance(myMaster.tr.position, GameManager.instance.currentAvatar.tr.position) <= myMaster.killDistance && GameManager.instance.currentAvatar.stateMachine.currentState != GameManager.instance.currentAvatar.stateMachine.death)
        {
            if (timeInState >= timeToKill && GameManager.instance.currentAvatar.controller.enabled)
            {
                Physics.Linecast(myMaster.tr.position + Vector3.up, GameManager.instance.currentAvatar.tr.position + Vector3.up, out hit);
                if (hit.collider.CompareTag("Player"))
                {
                    GameManager.instance.currentAvatar.animator.SetBool("deathByTrap", true);
                    GameManager.instance.currentAvatar.stateMachine.ChangeState(GameManager.instance.currentAvatar.stateMachine.death);
                    myMaster.playerDetected = false;
                    myMaster.Invoke("ResetPos", 3f);
                    myMaster.stateMachine.ChangeState(myMaster.search);
                }
            }
        }
    }
Exemplo n.º 4
0
    public void StateUpdate()
    {
        if (myMaster.pathObject != null)
        {
            myMaster.stateMachine.ChangeState(myMaster.patrol);
        }

        myMaster.LookForPlayer();
        myMaster.animator.SetBool("isDetectingBlank", myMaster.playerDetected);

        if (myMaster.playerDetected)
        {
            myMaster.stateMachine.ChangeState(myMaster.chase);
        }
    }