// Update is called once per frame void Update() { if (engage && grounded) { players = aiController.GetPlayers(); if (players.Length > 0) { GetTarget(); } if (closestPlayer != null) { ManageSensors(); aiMovement.ManageAxisInput(axisX, ref lerpX, lerpLimitX); aiMovement.ManageAxisInput(axisY, ref lerpY, lerpLimitY); float inputY = lerpY / lerpLimitY; aiMovement.Move(inputY, transform); // lerp / lerpLimit dictates the percentage of movement ManageMovementParticles(inputY); aiMovement.Rotate(lerpX / lerpLimitX, transform); aiAiming.AimTurret(playerTarget); if (players.Length > 0 && aiAiming.CheckIfReadyToFire()) { ManageFireInput(); } CheckToEvade(); } else { aiMovement.Move(0, transform); ManageMovementParticles(0); } } }
private IEnumerator RotateAI(Direction newFacingDirection) { if (newFacingDirection != facingDirection) { switch (newFacingDirection) { case Direction.Front: yield return(StartCoroutine(AIMovement.Rotate(this.transform, 0, new Vector3(0, 1, 0), 0.3f))); break; case Direction.Left: yield return(StartCoroutine(AIMovement.Rotate(this.transform, -90, new Vector3(0, 1, 0), 0.3f))); break; case Direction.Right: yield return(StartCoroutine(AIMovement.Rotate(this.transform, 90, new Vector3(0, 1, 0), 0.3f))); break; case Direction.Back: yield return(StartCoroutine(AIMovement.Rotate(this.transform, 180, new Vector3(0, 1, 0), 0.3f))); break; } this.facingDirection = newFacingDirection; } }