Unity中实现Scene模式下的鼠标操作效果
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class CameraAction : MonoBehaviour {
public float mouseScrollSpeed = 40, //滚滚轮放大缩小速度
mouseDragSpeed1 = 10, //单单按右键旋转的速度
mouseDragSpeed2 = 1.26f;//按中键移动的速度
public Vector3 mouseLastPosition = new Vector3(0, 0, 0), //“上一次”光标的位置
mousePositionDelta = new Vector3(0, 0, 0);//光标位置变化量,等于现在光标位置减上一次光标的位置
Vector3 rotateDelta = new Vector3(0, 0, 0);//单单按鼠标右键旋转相机的速度
public Texture2D m_texture2D1, m_texture2D2, m_texture2D3, m_texture2D4;//光标图案
private void FixedUpdate()
{
MouseEvents();
}
void MouseEvents()
{
//按住鼠标右键拖动
if (Input.GetMouseButton(1))
{
mousePositionDelta = Input.mousePosition - mouseLastPosition;
mouseLastPosition = Input.mousePosition;
if (mousePositionDelta.magnitude != 0)
{
rotateDelta = new Vector3(-mousePositionDelta.y * Time.deltaTime * mouseDragSpeed1,
mousePositionDelta.x * Time.deltaTime * mouseDragSpeed1, 0);
//按Alt+鼠标右键
if (Input.GetKey(KeyCode.LeftAlt) || Input.GetKey(KeyCode.RightAlt))
{
this.transform.Translate(new Vector3(0, 0, Time.deltaTime * mouseScrollSpeed * (rotateDelta.x + rotateDelta.y)), Space.Self);
Cursor.SetCursor(m_texture2D4, new Vector2(5, 5), CursorMode.ForceSoftware);
}
//单单按鼠标右键
else
{
transform.eulerAngles += rotateDelta;
Cursor.SetCursor(m_texture2D1, new Vector2(5, 5), CursorMode.ForceSoftware);
}
}
}
//按住鼠标中键拖动
else if (Input.GetMouseButton(2))
{
mousePositionDelta = Input.mousePosition - mouseLastPosition;
mouseLastPosition = Input.mousePosition;
if (mousePositionDelta.magnitude != 0)
{
rotateDelta = new Vector3(-mousePositionDelta.x * Time.deltaTime * mouseDragSpeed2,
-mousePositionDelta.y * Time.deltaTime * mouseDragSpeed2, 0);
transform.Translate(rotateDelta, Space.Self);
Cursor.SetCursor(m_texture2D3, new Vector2(5, 5), CursorMode.ForceSoftware);
}
}
//如果没有按鼠标除了滚滚轮的键,则实时更新光标“上一次”的位置mouseLastPosition
else
{
mouseLastPosition = Input.mousePosition;//重新赋初值
Cursor.SetCursor(m_texture2D2, new Vector2(5, 5), CursorMode.ForceSoftware);//更改鼠标图标
}
//滚轮——放大缩小
if (Input.mouseScrollDelta.y != 0)//滚轮滚了多少
transform.Translate(new Vector3(0, 0, Time.deltaTime * mouseScrollSpeed * Input.mouseScrollDelta.y), Space.Self);
}
}
Unity中实现Scene模式下的鼠标操作效果相关推荐
- 原来在UNITY中使用system.io下的所有函数都可以用相对路径 : Assets/xx
原来在UNITY中使用system.io下的所有函数都可以用相对路径 : Assets/xx 代码如下图,这样就不用在绝对路径和相对路径之间不断转换了. 想要得到绝对路径时就傅 Application ...
- Unity中获取一个物体下所有的子物体的方法
Unity中获取一个物体下所有的子物体的方法 方法1(获取全部子物体,无论子物体SetActive是否为true): using System.Collections; using System.Co ...
- linux dd 编辑,Vim编辑器中,在命令模式下的dd命令是用来( )。
Vim编辑器中,在命令模式下的dd命令是用来( ). 更多相关问题 下列说法中不正确的是()A.-1的立方根是-1B.0的平方根与立方根相等C.-4的平方根是±2D.每个数都有一个立方 设s=11+1 ...
- Linux中vim的三种命令格式,及命令模式下常见的操作
目录 什么是vim 三种命令模式,以及相互转换 命令模式下的文本操作 什么是vim Vim是一个类似于Vi的著名的功能强大.高度可定制的文本编辑器,在Vi的基础上改进和增加了很多特性 三种命令模式,以 ...
- 鼠标在linux下如何工作,Linux操作系统下的鼠标操作
本不想写这些玩意儿,其实我并不喜欢它们,只不过没办法,谁叫我是靠这些家伙糊口的呢! 若干年前,我自认为很喜欢Linux操作系统:若干年后,我发现我当初是何等的天真. 恩,一分钱,一分货!我坚信这一点! ...
- unity中2D飞机游戏手指触屏操作的问题
unity中2D飞机游戏手指触屏操作的问题 菜鸡记录一下在项目中遇到的坑 下面就是我用的代码 if (UnityEngine.Input.touchCount > 0) //每一帧触摸到的屏幕的 ...
- 华为使用计算机投屏要打开什么,华为P20投屏开启电脑办公模式,键盘鼠标操作更方便...
原标题:华为P20投屏开启电脑办公模式,键盘鼠标操作更方便 随着手机功能越来越强,甚至具备一定的办公能力,传统电脑打开率越来越低.手机会不会在某天取代电脑呢?华为新近推出的旗舰机型如P20配套手机投屏 ...
- pyqtgraph 在Opengl模式下开启抗锯齿效果
pyqtgraph 在Opengl模式下开启抗锯齿效果 修改pyqtgraph源码文件pyqtgraph/widgets/GraphicsView.py def useOpenGL(self, b=T ...
- Linux CentOS系统 图形模式下,鼠标键盘操作没有响应
1.前言 最近在和同事一起在linux CentOS系统下部署项目,由于同事不知道执行了什么不当操作,改变了系统的权限(权限可能是被修改,也可能是被删除了),改变的权限有可能是用户权限,也可能是其它权 ...
最新文章
- 在线作图|小基因组——线粒体基因组圈图
- Linux mail 命令参数
- 万能系统卸载器免root_这下舒服了!一键卸载安卓全机型预装应用
- 你心中有这样的人吗?
- php栏目树,php生成无限栏目树的代码实例分享
- angular 居中_Angular 的模块间通信
- php回滚实例_thinkphp 的事务回滚处理 和 原始PHP的事务回滚实例
- Spring文件中的xsd文件
- 华为手机上的计算机怎么没了,华为手机怎么连接电脑 华为手机连接不上电脑怎么回事 华为手机连接USB没反应...
- 怎么裁剪PDF页面,PDF如何调整页面大小
- cocos2dx 特效 3D特效
- 著者四角号码查询_著者姓名汉语拼音与四角号码数字混编书次号的应用
- PTA 【java】7-2 将数组中的数逆序存放 (20 分)
- 计算机组成原理——指令系统(课程笔记)
- 2022最新独立版智狐聚合支付v1.0.5.21_聚合支付系统源码
- 树莓派4B爽上流安装python3的OpenCV(人脸检测识别—门禁“环境搭建篇”)
- 关于网站在不同的网络访问不了的原因
- GDB调试之定位段错误
- python爬取付费漫画_python selenium爬取kuku漫画
- linux 网卡驱动升级,安装或更新CentOS平台的网卡驱动程序
热门文章
- 山东一高校发挥专业所长 加速建造超4600平米隔离区(给自己学校点赞)
- 线条边框简笔画图片大全_关于冬天的简笔画图片大全
- 性能优化之思路和分析
- 跳过TPM 2.0检测无损在Win10的基础上升级成Windows 11
- 深入学习ProGuard之:ProGuard简介与android的应用
- android proguard 不起作用,Android-ProGuard 混淆
- android版本5.1怎么升级到6.1,华为EMUI3.1新版本开发版5.9.1更新内容
- nlog官方帮助_NLog使用方法
- Mysql--主键和外键,范式和表与表的关系
- 二战考研,决心启程 第一天