unity 自由相机控制脚本

您所在的位置:网站首页 unity相机控制游戏场景 unity 自由相机控制脚本

unity 自由相机控制脚本

2024-07-16 07:44| 来源: 网络整理| 查看: 265

类似于编辑器的相机控制

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