Unity Camera根据鼠标或触摸移动
1.在边界时移动
鼠标到达游戏界面的边界时开始移动相机,适用于PC端、需要鼠标的游戏。
if (Input.mousePosition.y > Screen.height){m_camFollowPos.y += moveAmount * Time.deltaTime;}if (Input.mousePosition.y < 0){m_camFollowPos.y -= moveAmount * Time.deltaTime;}if (Input.mousePosition.x > Screen.width)//如果鼠标位置在右侧{m_camFollowPos.x += moveAmount * Time.deltaTime;//就向右移动}if (Input.mousePosition.x < 0){m_camFollowPos.x -= moveAmount * Time.deltaTime;}m_camFollowPos.y = Mathf.Clamp(m_camFollowPos.y, m_minCamYPos, m_maxCamYPos);m_camFollowPos.x = Mathf.Clamp(m_camFollowPos.x, m_minCamXPos, m_maxCamXPos);myCamera.transform.position = m_camFollowPos;//刷新摄像机位置
2. 按住鼠标/触摸时拖动相机
在PC端按住鼠标拖动相机。在移动端单指按住拖动相机。
void Update(){if (GameRoot.Instance.isMenuActive){return;}#if (UNITY_ANDROID || UNITY_IPHONE) && !UNITY_EDITORHandleTouchInput();
#elseHandleMouseInput();
#endif}void HandleTouchInput(){if (Input.touchCount == 1){Touch touch = Input.GetTouch(0);if (touch.phase == TouchPhase.Began){m_prevPosition = touch.position;}else if (touch.phase == TouchPhase.Moved){Vector2 curPosition = touch.position;MoveCamera(m_prevPosition, curPosition);m_prevPosition = curPosition;}}}void HandleMouseInput(){if (Input.GetMouseButtonDown(0)){m_prevPosition = Input.mousePosition;}else if (Input.GetMouseButton(0)){Vector2 curMousePosition = Input.mousePosition;MoveCamera(m_prevPosition, curMousePosition);m_prevPosition = curMousePosition;}}private void MoveCamera(Vector2 prevPosition, Vector2 curPosition){//注意这里的myCamera.nearClipPlaen。由于我使用的是透视相机,所以需要将z值改为这个//如果读者使用的是正交相机,可能不需要这个Vector2 offset = (myCamera.ScreenToWorldPoint(new Vector3(prevPosition.x, prevPosition.y, myCamera.nearClipPlane)) - myCamera.ScreenToWorldPoint(new Vector3(curPosition.x, curPosition.y, myCamera.nearClipPlane)));//这里的m_cameraScale,因为我不想修改nearClipPlaen的值来达到移动的快慢,所以加了个移动参数Vector2 newPos = new Vector2(transform.localPosition.x + offset.x * m_cameraScaleVal, transform.localPosition.y + offset.y * m_cameraScaleVal);newPos.y = Mathf.Clamp(newPos.y, m_minCamYPos, m_maxCamYPos);newPos.x = Mathf.Clamp(newPos.x, m_minCamXPos, m_maxCamXPos);transform.position = new Vector3(newPos.x, newPos.y, transform.position.z);}
Unity Camera根据鼠标或触摸移动相关推荐
- Unity 基础 之 鼠标控制 相机(摄像机Camera)的旋转,移动和 fov 的简单使用整理
Unity 基础 之 鼠标控制 相机(摄像机Camera)的旋转,移动和 fov 的简单使用整理 目录 Unity 基础 之 鼠标控制 相机(摄像机Camera)的旋转,移动和 fov 的简单使用整理 ...
- Unity实现以鼠标为中心缩放物体(一)
Unity实现以鼠标为中心缩放物体(一) 方法一:UGUI下动态设置Pivot Canvas.renderMode = ScreenSpaceCamera Canvas.renderMode = Sc ...
- linux鼠标触摸屏应用程序,在Ubuntu环境下实现插入鼠标自动关闭触摸板
本文将为你介绍在 Ubuntu 环境下也能实现插入鼠标自动关闭触摸板的功能. 如果你经常在笔记本上用鼠标,你就会对因为偶尔碰到触摸板而打断自己的操作而憋屈了.当你用外接鼠标的时候关闭触摸板就是一个很好 ...
- Windows 10——连接鼠标时触摸板失效解决方案
问题描述 连接鼠标时触摸板失效, 拔掉鼠标触摸板恢复正常. 问题分析 设备正常 Windows 系统设置中有 链接鼠标时让触摸板保持打开状态 的设置. 解决方案 参考文章 https://zhidao ...
- Unity Camera设置-Culling Mask
Unity Camera设置-Culling Mask 参考文档:Unity中Camera参数-Culling Mask详解_-MCQ-的博客-CSDN博客_unity相机cullingmask 简介 ...
- unity Camera控制(上帝视角)
unity Camera控制(上帝视角) 解决问题 解决移动速度不变带来的操作迟缓: 实现在摄像机不同角度下,始终针对地面的水平移动(而非视口的上下左右移动): 实现绕点旋转. 正文 在针对大场景(如 ...
- Mac 电脑鼠标和触摸板滚动方向不一致的问题
当我们使用鼠标连接到 MacBook 时,会发现无论怎么设置,鼠标和触摸板的滚动方向都是相反的,导致不能同时使用鼠标和触摸板 解决方法: 我安装了下面的程序,它只允许您反转鼠标的滚动行为: Scrol ...
- win11电脑锁定触摸板或无鼠标打开触摸板
锁定触摸板 桌面上右键点显示设置或个性化 点蓝牙和其他设备,再点触摸板 如下图点击打开或关闭 无鼠标打开触摸板 使用win+i(win键是4个方块的键,在键盘左下方)键打开系统设置 之后与前面一样通过 ...
- 基于 Tile PPU 的 Unity Camera Size 计算公式
基于 Tile PPU 的 Unity Camera Size 计算公式 背景 公式 背景 1.背景图为1920x1080. 2.如果我们的像素单位是64x64像素,即 PPU 为64. 3.默认ca ...
最新文章
- 使用Entity Framework Core访问数据库(DB2篇)
- 指令引用了 内存 该内存不能为read 一直弹窗_【翻译】使用Rust测试ARM和X86内存模型
- 写在S3C2440A平台+winCE5.0+NAND +HIVE注册表的实现
- c++ dll返回容器_Windows x86 Shellcode开发:寻找Kernel32.dll地址
- 可以种树吗_基本农田能干什么?种树?建房?搞种养殖?哪种可以?
- Silk codec的一些资料
- Mac 计算器隐藏功能,满足你所有计算要求
- Markdown编辑器语法之代码高亮、标记和文字颜色
- 黑群晖DSM7.1.0物理机安装教程
- 2022高教社杯 国赛数学建模 A题思路
- 微信单删和互删有什么区别?
- 阿昆同学的Java学习日记Day3
- seo是什么工作介绍
- 声音信号希尔伯特黄变换
- log4j在maven项目中的使用
- city code table广东_【考试|定了!2021年广东高中学考安排来了】招生|高考|普通高中|英语_热点...
- Android动画之Interpolator(插值器)
- Android简易计算器的制作
- 黑盒测试简介和常用方法
- JavaGUI编程 -- 窗口监听事件和键盘监听事件(AWT)