Esempio n. 1
0
    // Update is called once per frame
    void Update()
    {
        if (isGoodBoi)
        {
            noMoreGoodBoiTimer -= Time.deltaTime;
            if (noMoreGoodBoiTimer <= 0)
            {
                isGoodBoi = false;
                wolfAnimator.SetBool("calme", false);
                noMoreGoodBoiTimer = noMoreGoodBoiTimermax;
            }
            return;
        }
        transform.position = new Vector3(transform.position.x, transform.position.y, transform.position.y / 100);

        if (isMoving)
        {
            Vector3 vLouptoWP = waypointsPosition[currentWaypointTargeted] - (Vector2)transform.position;
            //transform.position = Vector3.MoveTowards(transform.position, waypointsPosition[currentWaypointTargeted], currentSpeed * Time.deltaTime);
            //Vector3 mouvement = new Vector3(new Vector3(waypointsPosition[currentWaypointTargeted].x, waypointsPosition[currentWaypointTargeted].y, 0) - transform.position)));
            //mouvement = new Vector3(mouvement.x, mouvement.y, 0);
            transform.position += (vLouptoWP.normalized * currentSpeed * Time.deltaTime);
            float distanceToTravelLeft = Mathf.Sqrt(Mathf.Pow((waypointsPosition[currentWaypointTargeted].x - transform.position.x), 2) + Mathf.Pow((waypointsPosition[currentWaypointTargeted].y - transform.position.y), 2));
            if (distanceToTravelLeft <= 0.5)
            {
                if (currentWaypointTargeted < maxWaypoint)
                {
                    currentWaypointTargeted++;
                }
                else
                {
                    currentWaypointTargeted = 1;
                }
            }
        }
        else if (isFleeing)
        {
            //transform.position = Vector3.MoveTowards(transform.position, retreatPosition, (currentSpeed+2) * Time.deltaTime);
            float distanceToTravelLeft = Mathf.Sqrt(Mathf.Pow((retreatPosition.x - transform.position.x), 2) + Mathf.Pow((retreatPosition.y - transform.position.y), 2));
            transform.position += (Vector3)((retreatPosition - (Vector2)transform.position).normalized * (currentSpeed) * Time.deltaTime * distanceToTravelLeft);
            if (distanceToTravelLeft <= 0.1)
            {
                isFleeing = false;
                wolfAnimator.SetBool("fleeing", false);
                isMoving = true;
            }
        }
        else
        {
            isMoving = true;
        }

        if (kidIsClose && !isFleeing)
        {
            wolfAnimator.SetBool("grogne", true);
            gameObject.GetComponent <SonLoupScript>().PlayGrogneSound();//faire se jouer une fois

            switch (kidScript.GetCurrentSpeed())
            {
            case (1):
                isMoving            = false;
                gettingMad          = false;
                becomeGoodBoiTimer -= Time.deltaTime;
                if (becomeGoodBoiTimer <= 0)
                {
                    isGoodBoi          = true;
                    becomeGoodBoiTimer = becomeGoodBoiTimerMax;
                }
                break;

            case (2):
                gettingMad         = true;
                isMoving           = false;
                becomeGoodBoiTimer = becomeGoodBoiTimerMax;
                // kid is jogging
                break;

            case (3):
                gettingMad         = true;
                isMoving           = false;
                becomeGoodBoiTimer = becomeGoodBoiTimerMax;
                // kid is running
                break;

            case (0):
                isMoving            = false;
                gettingMad          = false;
                becomeGoodBoiTimer -= Time.deltaTime;
                if (becomeGoodBoiTimer <= 0)
                {
                    isGoodBoi = true;
                    print("Imma a good boi now !");
                    wolfAnimator.SetBool("calme", true);
                    becomeGoodBoiTimer = becomeGoodBoiTimerMax;
                    gameObject.GetComponent <SonLoupScript>().PlayGoodBoySound();
                }
                break;
            }

            if (gettingMad)
            {
                gettingMadCountDown -= Time.deltaTime;
                if (gettingMadCountDown <= 0)
                {
                    gettingMad          = false;
                    gettingMadCountDown = gettingMadCountDownMax;
                    Bark();
                }
            }
        }
        else
        {
            wolfAnimator.SetBool("grogne", false);
        }
    }