private void Swim() { if (Time.fixedTime >= nextActionTime) { //Randomize the speed randomizedSpeed = fishSpeed * UnityEngine.Random.Range(.5f, 1.5f); //Pick a random target targetPosition = PenguinArea.ChooseRandomPosistion(transform.parent.position, 100f, 260f, 2f, 13f); //Rotate toward the target transform.rotation = Quaternion.LookRotation(targetPosition - transform.position, Vector3.up); //Calculate the time to get there float timeToGetThere = Vector3.Distance(transform.position, targetPosition) / randomizedSpeed; nextActionTime = Time.fixedTime + timeToGetThere; } else { //Make sure that fish doesn't swim past the target Vector3 moveVector = randomizedSpeed * transform.forward * Time.deltaTime; if (moveVector.magnitude <= Vector3.Distance(transform.position, targetPosition)) { transform.position += moveVector; } else { transform.position = targetPosition; nextActionTime = Time.fixedTime; } } }