Panning an array of cameras

Hi all, I have a set of 6 cameras linked to a vehicle model in my scene. The cameras are oriented and positioned to provide a 360-degree view around the vehicle. In case you’re wondering why six cameras are needed, I am writing this application to model a security camera system on a U.S. Army infantry vehicle. The game UI is meant to mimic a display inside the vehicle that lets the user see three of the cameras at any one time in a horizontal “strip”. To see the other cameras the user can drag the strip left and right, bringing the “offscren” cameras into view. Hopefully this makes sense…

My approach was to make an array of the cameras positioned on the screen via each one’s pixelRect. Upon detecting a mouse drag the script would iterate through the array and update the pixelRect.x based on the mouse movement. This all works great, except that I can’t get the left-most camera to move any further left than x=0. In other words, where you should be able to keep dragging, moving that camera further off screen, it just stops. The same thing happens to the right-most camera when dragging to the right - it won’t move off the right edge of the screen.

So, my fear is that this method won’t work. I would really appreciate any answers to the following questions:

  1. Is it possible to set a camera’s pixelRect.x less than 0, or greater than Screen.width-pixelRect.width? In other words, can I drag cameras partially off screen?

  2. If not, does anybody have suggestions on another way to get this effect? I looked at render to texture, but I only have the free version of Unity. If that is the only way to solve my problem I can upgrade to Pro.

Thanks for any replies! My camera panning script is below, in case it helps.

CameraPan.js:

var Speed = 10.0;
var cameraArray : Camera[];
var go = 0;
function Update () {
if(Input.GetAxis("Fire1"))
{		
	for(var cam in cameraArray)
	{
		if(cam.pixelRect.Contains(Input.mousePosition))
		{
			go = 1;
		}
	}
	if(go)
	{
		for(var cam in cameraArray)
		{
			cam.pixelRect.x += Input.GetAxis("Mouse X")*Speed;		
		}
	}
	go = 0;
}

}

So I tried this and it doesn’t quite work. I can change the camera width no problem (I tried changing pixelRect.width and pixelRect.xMax - they produced the same effect). However, the width only “shrinks” from the right hand side of the camera. So the effect does not look like a view that is shifting left off the side of the screen, instead it looks like a view that is just getting narrower.

I got a pro license trial to try implementing the effect with RenderTextures. However, I’m having two issues there as well:

  1. I cannot get the RenderTexture to display at the size I need (a width proportional to about 1/3 the Screen.width with a 1.33 aspect ratio)
  2. As I make the RenderTexture larger the quality drops dramatically. At the largest size I can get it to - still smaller than I need - the camera image looks really pixelated.

I’m out of ideas. Any thoughts?