void Update() { // which region is my target in (that's where I want look) Vector3 targetPos = objectToFollow.transform.position; // Which region is my part of? CameraRegion currentRegion = FindRegionForPoint(targetPos); if (currentRegion != null) { // put where I want it Bounds cameraBounds = Camera.main.GetWorldBounds(); cameraBounds.center = new Vector3(targetPos.x, targetPos.y, cameraBounds.center.z); // nudge back if need be cameraBounds = FitWithinBoundsXY(cameraBounds, currentRegion.GetWorldBounds()); Vector3 finalPos = new Vector3(cameraBounds.center.x, cameraBounds.center.y, Camera.main.transform.position.z); Camera.main.transform.position = finalPos; } else { // don't do anything... might want to center palyer.. or kill player... yaknow.. whatever... } }
CameraRegion FindRegionForPoint(Vector2 position) { for (int i = 0; i < cameraRegions.Length; ++i) { CameraRegion region = cameraRegions[i]; Bounds b = region.GetWorldBounds(); if ((position.x >= b.min.x) && (position.x <= b.max.x) && (position.y >= b.min.y) && (position.y <= b.max.y)) { return(region); } } return(null); }