public void ClampCameraToBounds(LookAtSurfaceCamera camera) { var maxY = boundsCenter.y + (boundsSize.y * .5f); var minY = boundsCenter.y - (boundsSize.y * .5f); var distanceToTarget = camera.GetDistanceToTarget(); if (distanceToTarget >= maxY) camera.SetDistanceToTarget(maxY); else if (distanceToTarget <= minY) camera.SetDistanceToTarget(minY); var minX = boundsCenter.x - (boundsSize.x * .5f); var lookTarget = camera.GetLookTarget(); var delta = lookTarget - boundsCenter; if (lookTarget.x <= minX) camera.TranslateLookTargetTo(new Vector3(minX, lookTarget.y, lookTarget.z)); }
public void SetUp() { surfaceOrigin = Vector3.zero; surfaceUp = Vector3.up; surfaceRadius = 10f; surface = new SphereSurface(surfaceOrigin, surfaceRadius, surfaceUp); initialCameraDistance = 100f; timeDelta = .25f; var go = new GameObject(); transform = go.transform; camera = new LookAtSurfaceCamera(transform, surface); camera.InitializeCamera(); camera.SetDistanceToTarget(initialCameraDistance); zoomSpeed = 10f; rotateSpeed = Mathf.PI; testObj = new SphereMover(camera, surface, zoomSpeed, rotateSpeed); }