| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 |
- using UnityEngine;
- using System.Collections;
- /**
-
- * 备注:本脚本必须赋予主镜头
-
- */
- public class CameraRotateAround : MonoBehaviour
- {
- public Transform target;//主相机要围绕其旋转的物体
- public float distance = 7.0f;//主相机与目标物体之间的距离
- public float xSpeed = 70.0f;//主相机水平方向旋转速度
- public float minAngleX = -15;
- public float maxAngleX = 15;
- public Vector3 offset;
- private bool rotated = false;
- private float eulerAngles_x;
- private float eulerAngles_y;
- private float initAngleX = 0;
- private float minAngle = 0;
- private float maxAngle = 0;
- private float movedAngle = 0;
- private Vector3 dir;
- void LateUpdate()
- {
- if (rotated)
- {
- movedAngle += ((Input.GetAxis("Mouse X") * this.xSpeed) * this.distance) * 0.02f;
- if(movedAngle <= minAngle)
- {
- movedAngle = minAngle;
- }else if(movedAngle >= maxAngle)
- {
- movedAngle = maxAngle;
- }
- Quaternion quaternion = Quaternion.Euler(0, movedAngle, 0);
- Vector3 vector = ((Vector3)(quaternion * this.offset)) + BattleMgr.Instance.Battle.TeamCenter;
- this.transform.rotation = Quaternion.Euler(this.eulerAngles_y, movedAngle + initAngleX, 0);
- this.transform.position = vector;
- //this.eulerAngles_x += ((Input.GetAxis("Mouse X") * this.xSpeed) * this.distance) * 0.02f;
- //Quaternion quaternion = Quaternion.Euler(0, this.eulerAngles_x - initAngleX,0);
- //Vector3 vector = ((Vector3)(quaternion * this.offset)) + BattleMgr.Instance.Battle.TeamCenter;
- //this.transform.rotation = Quaternion.Euler(this.eulerAngles_y, this.eulerAngles_x,0);
- //this.transform.position = vector;
- }
- }
- public void StartRotate()
- {
- if (this.target == null) return;
- Vector3 eulerAngles = this.transform.eulerAngles;//当前物体的欧拉角
- this.eulerAngles_x = eulerAngles.y;
- this.eulerAngles_y = eulerAngles.x;
- minAngle = this.minAngleX + this.target.eulerAngles.y;
- maxAngle = this.maxAngleX + this.target.eulerAngles.y;
- initAngleX = this.eulerAngles_x;
- movedAngle = 0;
- rotated = true;
- dir = new Vector3(0, 0, 1);
- this.offset = this.transform.position - BattleMgr.Instance.Battle.TeamCenter;
- }
- public void StopRotate()
- {
- rotated = false;
- }
- }
|