#pragma strict
@script AddComponentMenu("Level4/Cameras/FixedCamera")
///
//固定角度摄影机,主体
//思路:用变量offsetPos存放,摄影机与target的位置关系,
//修改offsetPos可以对摄影机的位置实现不同的控制.
///
/**摄影机的目标*/
var target:Transform;
/**与目标位置的偏移向量*/
var offsetPos:Vector3 = Vector3(0,4,-4);
/**跟随target的速度*/
var followSpeed:float = 0.2;
function Update(){
if(target){
UpdatePosition();
}
}
function Start(){
SetupCamera();
}
/**
设定 摄影机的旋转量.
*/
function SetupCamera(){
transform.rotation = Quaternion.LookRotation(-offsetPos);
}
//更新 摄影机的坐标.
private function UpdatePosition(){
var targetPos:Vector3 = target.position + offsetPos;
transform.position = Vector3.Lerp(transform.position,targetPos,followSpeed);
}
#pragma strict
@script AddComponentMenu("Level4/Cameras/FixedCameraMouseMove")
@script RequireComponent(FixedCamera);
//
///固定角度摄影机,鼠标控制
//
private var target:Transform;
private var fixedCamera:FixedCamera;
private var totalOffset:Vector3 = Vector3.zero;
/**移动的速度*/
var moveSpeed:float = 0.2;
/**xz平面,左下角坐标*/
var minPos:Vector3 = Vector3(-3,0,-6);
/**xz平面,右上角坐标*/
var maxPos:Vector3 = Vector3(3,0,1);
function Start(){
fixedCamera = GetComponent(FixedCamera);
target = fixedCamera.target;
}
function Update(){
MouseMoveCamera();
}
/**
通过鼠标移动视野.
h,x方向.
v,z方向.
*/
private function MouseMoveCamera(){
var h:float = Input.GetAxis("Mouse X");
var v:float = Input.GetAxis("Mouse Y");
var dir:Vector3 = Vector3(h,0,v);
dir *= moveSpeed;
var offsetPos:Vector3 = fixedCamera.offsetPos + dir;
//-----------------------------------限制.
offsetPos.x = Mathf.Clamp(offsetPos.x , minPos.x , maxPos.x);
offsetPos.z = Mathf.Clamp(offsetPos.z , minPos.z , maxPos.z);
fixedCamera.offsetPos = offsetPos;
}
#pragma strict
@script RequireComponent(FixedCamera)
//
///固定角度摄影机.滚轮缩放
//
private var fixedCamera:FixedCamera;
/**滚轮响应速度*/
var viewSpeed:float = 2;
/**yz平面,前下角坐标*/
var minPos:Vector3 = Vector3(0,4,-8);
/**yz平面,后上角坐标*/
var maxPos:Vector3 = Vector3(0,8,-4);
function Start(){
fixedCamera = GetComponent(FixedCamera);
}
function Update () {
UpdateView();
}
//更新视野.通过更新摄影机坐标来实现.
private function UpdateView(){
var val:float = Input.GetAxis("Mouse ScrollWheel");
if(val != 0){
val *= viewSpeed;
var yPos:float = -val;
var zPos:float = val;
var offsetPos:Vector3 = fixedCamera.offsetPos;
offsetPos += Vector3(0,yPos,zPos);
offsetPos.y = Mathf.Clamp(offsetPos.y , minPos.y , maxPos.y);
offsetPos.z = Mathf.Clamp(offsetPos.z , minPos.z , maxPos.z);
fixedCamera.offsetPos = offsetPos;
}
}