介绍
unity如何用鼠标中键,控制视角放大、移动?
鼠标滑轮滑动视角放大。
鼠标滑动按住拖拽,视角移动。
方法
把这个脚本,挂载到主相机上。文章来源:https://www.toymoban.com/news/detail-807196.html
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class ViewController : MonoBehaviour {
public float sizespeed = 1; // 定义了一个名为sizespeed的公共(public)浮点型(float)变量,初始值为1
public float mouseSpeed = 10; // 定义了一个名为mouseSpeed的公共浮点型变量,初始值为10
private Vector3 lastMousePosition; // 定义了一个名为lastMousePosition的私有(private)Vector3类型变量
// Update is called once per frame
void Update () { // 定义了一个名为Update的方法,在每一帧(frame)中被调用
float mouse = -Input.GetAxis("Mouse ScrollWheel"); // 获取鼠标滚轮的输入值,并将其赋值给名为mouse的局部(local)浮点型变量
// 鼠标中键按住拖动
if (Input.GetMouseButton(2)) { // 检测if语句中的条件是否为真,如果鼠标中键被按住,则执行大括号内的代码块
Vector3 deltaMousePosition = Input.mousePosition - lastMousePosition; // 获取当前鼠标位置和上一次鼠标位置之间的差值,并将其赋值给名为deltaMousePosition的局部Vector3类型变量
transform.Translate(-deltaMousePosition.x * mouseSpeed * Time.deltaTime, -deltaMousePosition.y * mouseSpeed * Time.deltaTime, 0); // 将摄像机的位置向左右和上下移动,移动的距离由鼠标的移动距离和鼠标速度决定
}
transform.Translate(new Vector3(0, mouse * sizespeed, 0) * Time.deltaTime, Space.World); // 将摄像机的位置向上或向下移动,移动的距离由鼠标滚轮的输入值和大小速度决定
lastMousePosition = Input.mousePosition; // 将鼠标当前位置赋值给lastMousePosition变量,以便下一帧计算鼠标位置差值
}
}
下面是对该方法的分点总结:文章来源地址https://www.toymoban.com/news/detail-807196.html
- 获取鼠标滚轮输入值:
float mouse = -Input.GetAxis("Mouse ScrollWheel");
- 如果鼠标中键被按住,则获取当前鼠标位置和上一帧鼠标位置之间的差值,并将其赋值给名为deltaMousePosition的局部Vector3类型变量:
if (Input.GetMouseButton(2)) {
Vector3 deltaMousePosition = Input.mousePosition - lastMousePosition;
}
- 将摄像机的位置向左右和上下移动,移动的距离由鼠标的移动距离和鼠标速度决定:
transform.Translate(-deltaMousePosition.x * mouseSpeed * Time.deltaTime, -deltaMousePosition.y * mouseSpeed * Time.deltaTime, 0);
- 将摄像机的位置向上或向下移动,移动的距离由鼠标滚轮的输入值和大小速度决定:
transform.Translate(new Vector3(0, mouse * sizespeed, 0) * Time.deltaTime, Space.World);
- 将鼠标当前位置赋值给lastMousePosition变量,以便下一帧计算鼠标位置差值:
lastMousePosition = Input.mousePosition;
- Update方法的完整实现如下:
void Update () {
float mouse = -Input.GetAxis("Mouse ScrollWheel");
if (Input.GetMouseButton(2)) {
Vector3 deltaMousePosition = Input.mousePosition - lastMousePosition;
transform.Translate(-deltaMousePosition.x * mouseSpeed * Time.deltaTime, -deltaMousePosition.y * mouseSpeed * Time.deltaTime, 0);
}
transform.Translate(new Vector3(0, mouse * sizespeed, 0) * Time.deltaTime, Space.World);
lastMousePosition = Input.mousePosition;
}
到了这里,关于超详细,unity如何用鼠标中键控制视角放大、移动的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!