void Update() { float jumperY = blob.transform.position.y; float desiredCameraY; if (blob.IsAscending()) { desiredCameraY = jumperY + distanceFromCam; } else { // Prevent too big movements when jumping down desiredCameraY = jumperY - (distanceFromCam / 2); } desiredCameraY = Mathf.Max(desiredCameraY, minY); Vector3 targetPos = new Vector3(posX, desiredCameraY, posZ); transform.position = Vector3.Lerp(transform.position, targetPos, moveSpeed); }