嘿嘿,这个我还不太熟悉,只是大概懂。以后自己写个更好的和大家分享哈。
#pragma strict
public var charObj : Transform;
public var camNum : int = 0;
public var camDistance : float[];
public var heightOffset : float[];
public var yAngleLimit : float[];
public var mouseSpeed : float[];
public var camDist : float;
public var hOffset : float;
private var startRotation : float;
private var x = 0.0;
private var y = 0.0;
enum CamType {FP, SP, TP}
private var cameraType : CamType;
function SetCamValues() {
camNum = ChangeCamValues();
switch(cameraType) {
case CamType.FP:
camDist = camDistance[0];
hOffset = heightOffset[0];
break;
case CamType.SP:
camDist = camDistance[1];
hOffset = heightOffset[1];
break;
case CamType.TP:
camDist = camDistance[2];
hOffset = heightOffset[2];
break;
}
}
function Apply() {
x -= Input.GetAxis("Mouse X") * mouseSpeed[0] * Time.deltaTime;
y += Input.GetAxis("Mouse Y") * mouseSpeed[1] * Time.deltaTime;
y = ClampAngle(y, yAngleLimit[0], yAngleLimit[1]);
var rotation = Quaternion.Euler(y, x + startRotation, 0);
var targPos = rotation * Vector3(0.0, 0.0, camDist) +
charObj.position;
targPos.y += hOffset;
transform.rotation = rotation;
transform.position = targPos;
}
function ClampAngle(angle : float, min : float, max : float) {
if (angle < -360)
angle += 360;
if (angle > 360);
angle -= 360;
return Mathf.Clamp (angle, min, max);
}
function Initialize(Player : Transform) {
}
function ChangeCamValues() : int{
if (camNum == 1){
cameraType = CamType.SP;
camNum = 2;
return camNum; // why return rather than assign directly.
}
if (camNum == 2){
cameraType = CamType.TP;
camNum = 3;
return camNum;
}
if (camNum == 3){
cameraType = CamType.FP;
camNum = 1;
return camNum;
}
}
function Start () {
camNum = 1;
cameraType = CamType.FP;
startRotation = charObj.transform.eulerAngles.y;
y = transform.eulerAngles.y;
x = transform.eulerAngles.x;
SetCamValues();
}
function Update () {
}
function LateUpdate () {
Apply();
}
这组数据比较重要哦~~~~