unity pc端 采用右键选择相机,中键盘移动缩放模型

本文介绍了一个Unity中用于控制相机移动、旋转和缩放的脚本。通过按键操作实现视角快速缩放,并允许玩家使用鼠标右键进行平移及旋转操作。同时支持滚轮进行缩放调整。

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

using UnityEngine;
using System.Collections;

public class CameraMove : MonoBehaviour {
public Texture2D cur;
public Texture2D[] cursors;
public float rotateSpeed;
public float wheelSpeed;
public float dragSpeed;
private GameObject _camera;
private ChooseObject _chooseObject;
Vector2 startPosition;
Vector2 startPosition1;
// Use this for initialization
void Start()
{
_camera = GameObject.Find(“Main Camera”);
_chooseObject = this.GetComponent();
}

// Update is called once per frame
void Update () {

    //快速缩进视角{
    if (Input.GetKeyUp (KeyCode.F))
    {
        if (_chooseObject.target != null)
        {
            Hashtable args = new Hashtable();
            args.Add("position", _chooseObject.target.transform.position);
            args.Add("time", 0.5f);
            iTween.MoveTo(_camera, args);
        }
    }
    //}

    //移动{
    if (Input.GetMouseButtonDown(2))                    //用来初始化鼠标点击
    {
        startPosition1 = Input.mousePosition;
    }
    if (Input.GetMouseButton(2))                        //PC端右键控制旋转
    {
        //_camera.transform.position += new Vector3(((Input.mousePosition.x - startPosition1.x) / Screen.width) * dragSpeed, -((Input.mousePosition.y - startPosition1.y) / Screen.height) * dragSpeed, 0);
        _camera.transform.Translate(-Vector3.right * ((Input.mousePosition.x - startPosition1.x) / Screen.width) * dragSpeed);
        _camera.transform.Translate(Vector3.up * -((Input.mousePosition.y - startPosition1.y) / Screen.height) * dragSpeed);
        startPosition1 = Input.mousePosition;
    }
    //}

    //旋转{
    if (Input.GetMouseButtonDown(1))                    //用来初始化鼠标点击
    {
        startPosition = Input.mousePosition;
    }
    if (Input.GetMouseButton(1))                        //PC端右键控制旋转
    {
        float a = ClampAngle(_camera.transform.localEulerAngles.x - ((Input.mousePosition.y - startPosition.y) / Screen.height) * rotateSpeed, -50, 50);
        _camera.transform.localEulerAngles += new Vector3(0, ((Input.mousePosition.x - startPosition.x) / Screen.width) * rotateSpeed, 0);
        _camera.transform.localEulerAngles = new Vector3(a, _camera.transform.localEulerAngles.y, 0);
        startPosition = Input.mousePosition;
    }
    //}

    //缩放{
    Vector3 fwd = transform.TransformDirection(Vector3.forward);
    _camera.transform.Translate(Vector3.forward * Input.GetAxis("Mouse ScrollWheel") * wheelSpeed, _camera.transform);
    //}
}

static float ClampAngle(float angle, float min, float max)
{
    if (angle > 120)
    {
        angle -= 360;
    }

    return Mathf.Clamp(angle, min, max);

}

public void CursorChange()
{
    //Cursor.SetCursor(cur, Vector2.zero, CursorMode.Auto);
}

}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值