Unity模仿Scene下操作相机旋转拖拽移动缩放

模仿UnityScene模式下开发者对相机的基础操作方式就一个脚本挂相机上就行了。
Demo资源点这里
在这里插入图片描述

/*****************************************************
    文件:CameraControl.cs
    版本:01
    作者:GZL
    功能:相机旋转拖拽移动缩放
*****************************************************/
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class CameraControl : MonoBehaviour
{
    public static CameraControl _instance;
    public float moveOrRotSpeed = 5;
    public float translationSpeed = 10;

    public float setXMin;
    public float setXMax;
    public float setYMin;
    public float setYMax;
    public float setZMin;
    public float setZMax;
    private Camera _camera;
    void Start()
    {
        _instance = this;
        _camera = Camera.main;
    }
    void LateUpdate()
    {

        //鼠标在这一帧移动的水平距离
        float x = Input.GetAxis("Mouse X");
        //鼠标在这一帧移动的垂直距离
        float y = Input.GetAxis("Mouse Y");
        float v = Input.GetAxis("Vertical");
        float h = Input.GetAxis("Horizontal");





        if (Input.GetMouseButton(1))
        {
            //绕世界坐标中的y轴旋转
            transform.Rotate(Vector3.up * x * moveOrRotSpeed, Space.World);
            //绕自身的x轴转
            transform.Rotate(Vector3.right * -y * moveOrRotSpeed);
            this._camera.transform.Translate(new Vector3(h * moveOrRotSpeed * Time.deltaTime, 0, v * moveOrRotSpeed * Time.deltaTime));
        }
        else if (Input.GetMouseButton(2))
        {
            this._camera.transform.Translate(new Vector3(-x * translationSpeed * Time.deltaTime, -y * translationSpeed * Time.deltaTime, 0));
        }
        else
        {
            float ms = Input.GetAxis("Mouse ScrollWheel");
            this._camera.transform.Translate(new Vector3(0f, 0f, ms * 100 * Time.deltaTime));
        }

        //空格键抬升高度
        if (Input.GetKey(KeyCode.Space))
        {
            transform.position = new Vector3(transform.position.x, transform.position.y + 0.1f, transform.position.z);
        }
        else if (Input.GetKey(KeyCode.LeftControl))
        {
            transform.position = new Vector3(transform.position.x, transform.position.y - 0.1f, transform.position.z);
        }

        var position = _camera.transform.position;
        position = new Vector3(Mathf.Clamp(position.x, setXMin, setXMax), Mathf.Clamp(position.y, setYMin, setYMax), Mathf.Clamp(position.z, setZMin, setZMax));
        _camera.transform.position = position;
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值