/// <summary> /// 修改相机缩放 /// </summary> /// <param name="bAdd"></param> private void ModifyCameraScale(bool bAdd) { if (bAdd) { if (CameraScaleType_ >= CameraScaleType.Max) { return; } } else { if (CameraScaleType_ <= CameraScaleType.Min) { return; } } CameraScaleType_ += (bAdd ? 1 : -1); float positionY = 0; float rotationX = 0; GetPositionY(CameraScaleType_, out positionY); GetRotationX(CameraScaleType_, out rotationX); for (CameraStatusType type = CameraStatusType.Free; type != CameraStatusType.All; type++) { CameraInfo cameraInfo = GetCameraInfo(type); cameraInfo.position.y = positionY; cameraInfo.angles.x = rotationX; } }
/// <summary> /// 设置相机模式 /// </summary> /// <param name="t"></param> public void SetCameraType(CameraStatusType t, Transform targetTrans = null) { Transform camTrans = MainCamera_.GetComponent <Transform>(); CameraStatusType_ = t; CameraInfo cameraInfo = GetCameraInfo(CameraStatusType_); SetCameraTarget(targetTrans); if (t == CameraStatusType.Free) { cameraInfo.position = camTrans.position; cameraInfo.angles = camTrans.eulerAngles; } else if (t == CameraStatusType.Lock) { cameraInfo.position = camTrans.position; cameraInfo.angles = camTrans.eulerAngles; } else if (t == CameraStatusType.SkillSelect) { cameraInfo.position = camTrans.position; cameraInfo.angles = camTrans.eulerAngles; } else if (t == CameraStatusType.Deploy) { cameraInfo.position = camTrans.position; cameraInfo.angles = camTrans.eulerAngles; } if (t != CameraStatusType.Free) { EventOnChangeCameraStatus(t); } }
public void InitBattleCamera() { if (MainCamera_ == null) { Debug.LogError("MainCamera is null, InitBattleCamera Failed!"); return; } CameraStatusType_ = CameraStatusType.Normal; CameraScaleType_ = CameraScaleType.Max; CameraInfo cameraInfo = GetCameraInfo(CameraStatusType_); float positionY = 0; float rotationX = 0; GetPositionY(CameraScaleType_, out positionY); GetRotationX(CameraScaleType_, out rotationX); cameraInfo.position = new Vector3(OriginPositionX, positionY, OriginPositionZ); cameraInfo.angles = new Vector3(rotationX, OriginRotationY, 0); // 初始化位置和旋转为普通模式,并确认对应坐标 Vector3 position = GetBattleCameraOriginPosition(); Quaternion rotation = Quaternion.Euler(cameraInfo.angles); Vector3 tempTarget = new Vector3(cameraInfo.position.x, cameraInfo.position.y, position.z - NormalCameraZDistance); MainCamera_.transform.rotation = rotation; MainCamera_.transform.position = tempTarget; }
/// <summary> /// 通过相机状态得到对应的相机信息缓存 /// </summary> /// <param name="type"></param> /// <returns></returns> private CameraInfo GetCameraInfo(CameraStatusType type) { if (type == CameraStatusType.NormalLerp) { type = CameraStatusType.Normal; } int temp = (int)type; if (CameraInfoList_[temp] == null) { CameraInfo tempInfo = new CameraInfo(); CameraInfoList_[temp] = tempInfo; return(tempInfo); } return(CameraInfoList_[temp]); }
/// <summary> /// 初始化布阵相机 /// </summary> public bool InitDepolyCamera() { bool succeed = false; if (MainCamera_ == null) { Debug.LogError("MainCamera is null, InitDepolyCamera Failed!"); return(succeed); } CameraStatusType_ = CameraStatusType.AutoMoveInDeploy; CameraScaleType_ = CameraScaleType.Max; CameraTargetTrans_ = null; Vector3 originPos = GetDeployCameraOriginPostion(); MainCamera_.transform.position = new Vector3(originPos.x, originPos.y, originPos.z); MainCamera_.transform.localEulerAngles = new Vector3(DeployOriginRotationX, DeployOriginRotationY, DeployOriginRotationZ); succeed = true; return(succeed); }