相机旋转移动

本文介绍了一个Unity摄像机控制器脚本,实现摄像机的缩放、平移和旋转功能。通过鼠标滚轮调整视野,鼠标左键进行平移,右键实现视角旋转,并提供了视角还原功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

using UnityEngine;
using UnityEngine.UI;
using System.Collections;
// 将脚本挂载到摄像机上  
public class CameraController : MonoBehaviour
{
    //控制视野缩放的速率
    public float view_value=100;
    public float moveSpeed = 100; // 设置相机移动速度  
    public static Vector3 cameraPosition;
    public static Quaternion cameraRotation;
    public static GameObject MainCameraObj;
    public static float cameraFieldofView;
    public static  GameObject shoolMapGameobjecct;
    public static Vector3 schoolMapPosition;
    public static Quaternion schoolMapRoation;
    void Start()
    {
        MainCameraObj = this.gameObject;
        cameraPosition = this.gameObject.transform.position;
        cameraRotation = this.gameObject.transform.rotation;
        cameraFieldofView = this.gameObject.GetComponent<Camera>().fieldOfView;
    }
    void Update()
    {
        if (SysConst.isCamera)
        {

            if (Input.GetAxis("Mouse ScrollWheel") != 0)
            {
                this.gameObject.transform.Translate(new Vector3(0, 0, Input.GetAxis("Mouse ScrollWheel") * Time.deltaTime * view_value));
            }
            // 当按住鼠标右键的时候  
            if (Input.GetMouseButton(0))
            {
                // 获取鼠标的x和y的值,乘以速度和Time.deltaTime是因为这个可以是运动起来更平滑  
                float h = Input.GetAxis("Mouse X") * moveSpeed * Time.deltaTime;
                float v = Input.GetAxis("Mouse Y") * moveSpeed * Time.deltaTime;
                // 设置当前摄像机移动,y轴并不改变  
                // 需要摄像机按照世界坐标移动,而不是按照它自身的坐标移动,所以加上Spance.World
                this.transform.Translate(-h*1.5f, 0, -v*1.5f, Space.World);
            }
            //视角旋转
            if (Input.GetMouseButton(1))
            {
                if (Mathf.Abs(Input.GetAxis("Mouse X"))>0||Mathf.Abs(Input.GetAxis("Mouse Y")) >0)
                {

               
                // this.transform.RotateAround(this.transform.position, Vector3.up, Input.GetAxis("Mouse X"));
                     if (Mathf.Abs(Input.GetAxis("Mouse X")) > Mathf.Abs(Input.GetAxis("Mouse Y")))
                    {
                 
                        shoolMapGameobjecct.transform.RotateAround(shoolMapGameobjecct.transform.position, Vector3.up, Input.GetAxis("Mouse X"));
                    
                   
                     }
                    if (Mathf.Abs(Input.GetAxis("Mouse X")) < Mathf.Abs(Input.GetAxis("Mouse Y")))
                     {
                       
                            shoolMapGameobjecct.transform.RotateAround(shoolMapGameobjecct.transform.position, Vector3.right, Input.GetAxis("Mouse Y"));
               
                      }
                }
            }
            //视角还原
            if (Input.GetKeyDown(KeyCode.Space))
            {
                //还原位置
                MainCameraObj.transform.position = cameraPosition;
                //还原旋转角度
                MainCameraObj.transform.rotation = cameraRotation;
                //还原摄像机广角
                MainCameraObj.GetComponent<Camera>().fieldOfView = cameraFieldofView;
                if (shoolMapGameobjecct != null)
                {
                  shoolMapGameobjecct.transform.position = schoolMapPosition;
                  shoolMapGameobjecct.transform.rotation = schoolMapRoation;
                }
            }
        }
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值