private var selectTarget: Transform;
private var currentSelectTarget: Transform;
private var originalColor : Color;
private var moveSpeed: float;
private var zoomSpeed: float;
private var x = 0.0;
private var y = 0.0;
@script AddComponentMenu("Camera-Control/Maya Style Camera Control")
function Start () {
var angles = transform.eulerAngles;
x = angles.y;
y = angles.x;
//make sure zoom speed and zoom distance are positive
ZoomSpeed=Mathf.Abs(ZoomSpeed);
maxZoomDistance=Mathf.Abs(maxZoomDistance);
maxZoomDistance=Mathf.Clamp(maxZoomDistance,5,10000);
minZoomDistance=Mathf.Clamp(minZoomDistance,0,maxZoomDistance-1);
if (rigidbody)
rigidbody.freezeRotation = ***e;
}
function Update(){
//selectTarget by left mouse button
//check if this function is used
if(enableFocus){
if(Input.GetKeyDown("mouse 0") && !Input.GetKey("left alt")){
//when left mouse button click, if there is a target at mouse point position, select it
//and deselect the previous target if there are
if(selectTarget){
if(currentSelectTarget)
currentSelectTarget.renderer.material.color=originalColor; originalColor=selectTarget.renderer.material.color;
selectTarget.renderer.material.color=onMouseSelectColour;
currentSelectTarget=selectTarget;
}
//else deselect the target
else if(currentSelectTarget){
currentSelectTarget.renderer.material.color=originalColor;
currentSelectTarget=null;
}
}
//if f key pressed, focus to the select target
if(Input.GetKeyDown("f")){
FocusToSelectTarget();
}
}
var headUpDir=transform.TransformDirection(Vector3.forward);
headUpDir.y=0;
headUpDir=headUpDir.normalized;
headUpDir*=Input.GetAxisRaw("Vertical")*40*Time.deltaTime;
var leftHandSideDir=transform.TransformDirection(Vector3.left)*Input.GetAxisRaw("Horizontal")*(-40)*Time.deltaTime;
target.Translate(headUpDir+leftHandSideDir);
}
function LateUpdate () {
if (target) {
//zoom and move speed are increased with the distance from camera to focus point
zoomSpeed=distance*ZoomSpeed/maxZoomDistance+50;
moveSpeed=distance*cameraMoveSpeed/maxZoomDistance+50;
//check use alt key or not
//if need use alt key to move camera, check if key is pressed
//otherwise just move the camera form mouse inputs
if(Input.GetKey("left alt") || !enableAltKey){
//left mouse button is for rotate camera
if(Input.GetKey("mouse 0")){
x += Input.GetAxis("Mouse X") * xSpeed * 0.02;
y -= Input.GetAxis("Mouse Y") * ySpeed * 0.02;
y = ClampAngle(y, yMinLimit, yMaxLimit);
}
//right mouse button is for zoom camera
else if(Input.GetKey("mouse 1")){
distance-=Input.GetAxis("Mouse X")* zoomSpeed *0.02;
distance-=Input.GetAxis("Mouse Y")* zoomSpeed *0.02;
}
//middle mouse button is for move camera around
else if(Input.GetKey("mouse 2")){
var leftHandSideMove=transform.TransformDirection(Vector3.left);
target.position+=(leftHandSideMove* moveSpeed *Input.GetAxisRaw("Mouse X") * 0.02);
target.position.y+=Input.GetAxisRaw("Mouse Y") * moveSpeed*0.02*(-1);
}
//make sure distance is positive and not too far
//calculate camera rotation and position