// 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); } }