unity 自由相机控制脚本 |
您所在的位置:网站首页 › unity相机控制游戏场景 › unity 自由相机控制脚本 |
类似于编辑器的相机控制 using UnityEngine; using System.Collections; using UnityEngine.EventSystems; public class FreeCamera : MonoBehaviour { private Vector3 oldMousePos; private Vector3 newMosuePos; [SerializeField] private float minimumY = 0.2f; [SerializeField] private float zoomSpeed = 30.0f; [SerializeField] private float keyBoardMoveSpeed = 1f; [SerializeField] private float rotSpeed = 0.05f; [SerializeField] //private float mouseMoveSpeed = 0.05f;//鼠标中键控制相机的速度 private float distance = 5; //private Vector3 centerOffset = Vector3.zero; private Vector3 initPos = Vector3.zero; private Vector3 initRot = Vector3.zero; private void Awake() { initPos = transform.position; initRot = transform.eulerAngles; } private void OnEnable() { transform.position = initPos; transform.eulerAngles = initRot; } void Update() { MoveCameraKeyBoard(); ZoomCamera(); SuperViewMouse(); oldMousePos = Input.mousePosition; } private void MoveCameraKeyBoard() { if (Input.GetKey(KeyCode.A) || Input.GetKey(KeyCode.LeftArrow))//(Input.GetAxis("Horizontal")= this.minimumY) transform.Translate(new Vector3(0, -keyBoardMoveSpeed, 0), Space.World); } } private void ZoomCamera() { float offset = Input.GetAxis("Mouse ScrollWheel"); if (offset != 0) { offset *= zoomSpeed; //currentCamera.transform.position = currentCamera.transform.position + currentCamera.transform.forward * offset;//localPosition this.distance -= offset; transform.Translate(Vector3.forward * offset, Space.Self); // } } private void SuperViewMouse() { if (Input.GetMouseButton(1)) { newMosuePos = Input.mousePosition; Vector3 dis = newMosuePos - oldMousePos; float angleX = dis.x * rotSpeed ;//* Time.deltaTime float angleY = dis.y * rotSpeed ;//* Time.deltaTime transform.Rotate(new Vector3(-angleY, 0, 0), Space.Self); transform.Rotate(new Vector3(0, angleX, 0), Space.World); } } } |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |