// Update is called once per frame void FixedUpdate() { Vector3 destination; if (poi == null) { destination = Vector3.zero; } else { //get the position of the poi destination = poi.transform.position; //if poi is a projectile, check to see if its at rest if (poi.tag == "Projectile") { //if it is sleeping (that is, not moving) if (poi.GetComponent <Rigidbody>().IsSleeping()) { //return to default view poi = null; if (MissionDemolition.S.shotsLeft == 0) { MissionDemolition.GameOver(); MissionDemolition.S.Invoke("StartLevel", 5f); } //in the next update return; } } } //limit the x and y to minimum values destination.x = Mathf.Max(minXY.x, destination.x); destination.y = Mathf.Max(minXY.y, destination.y); //interpolate from the current camera position towards destination destination = Vector3.Lerp(transform.position, destination, easing); //retain a destination.z of camZ destination.z = camZ; //set the camera to the destination transform.position = destination; //set the orthographic view of the camera to keep ground in view this.GetComponent <Camera>().orthographicSize = destination.y + 10; }