private IEnumerator MoveMainCameraToView(Person person) { Camera.main.transform.parent = person.head.transform; while (Camera.main.transform.position != person.head.transform.position) { Camera.main.transform.position = Vector3.MoveTowards(Camera.main.transform.position, person.head.transform.position, 5f * Time.deltaTime); Vector3 relativePos = person.head.transform.position - Camera.main.transform.position; Quaternion rotation = Quaternion.LookRotation(relativePos); Camera.main.transform.rotation = Quaternion.Lerp(Camera.main.transform.rotation, rotation, Time.deltaTime); yield return null; } while (Camera.main.transform.rotation != person.transform.rotation) { Camera.main.transform.rotation = Quaternion.RotateTowards(Camera.main.transform.rotation, person.transform.rotation, 50f * Time.deltaTime); yield return null; } person.controller.enabled = true; person.StopAllCoroutines(); person.GetComponent<Rigidbody>().useGravity = true; StartCoroutine(RemoveUnseenPeople(person)); }