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根据鼠标或触摸移动相关推荐

  1. Unity 基础 之 鼠标控制 相机(摄像机Camera)的旋转,移动和 fov 的简单使用整理

    Unity 基础 之 鼠标控制 相机(摄像机Camera)的旋转,移动和 fov 的简单使用整理 目录 Unity 基础 之 鼠标控制 相机(摄像机Camera)的旋转,移动和 fov 的简单使用整理 ...

  2. Unity实现以鼠标为中心缩放物体(一)

    Unity实现以鼠标为中心缩放物体(一) 方法一:UGUI下动态设置Pivot Canvas.renderMode = ScreenSpaceCamera Canvas.renderMode = Sc ...

  3. linux鼠标触摸屏应用程序,在Ubuntu环境下实现插入鼠标自动关闭触摸板

    本文将为你介绍在 Ubuntu 环境下也能实现插入鼠标自动关闭触摸板的功能. 如果你经常在笔记本上用鼠标,你就会对因为偶尔碰到触摸板而打断自己的操作而憋屈了.当你用外接鼠标的时候关闭触摸板就是一个很好 ...

  4. Windows 10——连接鼠标时触摸板失效解决方案

    问题描述 连接鼠标时触摸板失效, 拔掉鼠标触摸板恢复正常. 问题分析 设备正常 Windows 系统设置中有 链接鼠标时让触摸板保持打开状态 的设置. 解决方案 参考文章 https://zhidao ...

  5. Unity Camera设置-Culling Mask

    Unity Camera设置-Culling Mask 参考文档:Unity中Camera参数-Culling Mask详解_-MCQ-的博客-CSDN博客_unity相机cullingmask 简介 ...

  6. unity Camera控制(上帝视角)

    unity Camera控制(上帝视角) 解决问题 解决移动速度不变带来的操作迟缓: 实现在摄像机不同角度下,始终针对地面的水平移动(而非视口的上下左右移动): 实现绕点旋转. 正文 在针对大场景(如 ...

  7. Mac 电脑鼠标和触摸板滚动方向不一致的问题

    当我们使用鼠标连接到 MacBook 时,会发现无论怎么设置,鼠标和触摸板的滚动方向都是相反的,导致不能同时使用鼠标和触摸板 解决方法: 我安装了下面的程序,它只允许您反转鼠标的滚动行为: Scrol ...

  8. win11电脑锁定触摸板或无鼠标打开触摸板

    锁定触摸板 桌面上右键点显示设置或个性化 点蓝牙和其他设备,再点触摸板 如下图点击打开或关闭 无鼠标打开触摸板 使用win+i(win键是4个方块的键,在键盘左下方)键打开系统设置 之后与前面一样通过 ...

  9. 基于 Tile PPU 的 Unity Camera Size 计算公式

    基于 Tile PPU 的 Unity Camera Size 计算公式 背景 公式 背景 1.背景图为1920x1080. 2.如果我们的像素单位是64x64像素,即 PPU 为64. 3.默认ca ...

最新文章

  1. 使用Entity Framework Core访问数据库(DB2篇)
  2. 指令引用了 内存 该内存不能为read 一直弹窗_【翻译】使用Rust测试ARM和X86内存模型
  3. 写在S3C2440A平台+winCE5.0+NAND +HIVE注册表的实现
  4. c++ dll返回容器_Windows x86 Shellcode开发:寻找Kernel32.dll地址
  5. 可以种树吗_基本农田能干什么?种树?建房?搞种养殖?哪种可以?
  6. Silk codec的一些资料
  7. Mac 计算器隐藏功能,满足你所有计算要求
  8. Markdown编辑器语法之代码高亮、标记和文字颜色
  9. 黑群晖DSM7.1.0物理机安装教程
  10. 2022高教社杯 国赛数学建模 A题思路
  11. 微信单删和互删有什么区别?
  12. 阿昆同学的Java学习日记Day3
  13. seo是什么工作介绍
  14. 声音信号希尔伯特黄变换
  15. log4j在maven项目中的使用
  16. city code table广东_【考试|定了!2021年广东高中学考安排来了】招生|高考|普通高中|英语_热点...
  17. Android动画之Interpolator(插值器)
  18. Android简易计算器的制作
  19. 黑盒测试简介和常用方法
  20. JavaGUI编程 -- 窗口监听事件和键盘监听事件(AWT)

热门文章

  1. 计算机等级考试EXCEL中如何运用函数快速统计及格人数
  2. 2022最新CSGO国服能取回皮肤的国内开箱网站ak47csgo
  3. 丝涟品牌诞生140年,发布2021全新品牌口号
  4. 4G 模块HTTP连接Web Server 提交数据到PHP
  5. 如何将本地文件上传到腾讯云服务器(多图)
  6. 鸿蒙os3月31号更新,华为鸿蒙OS最新Beta3月31日推送 商用最快4月启动
  7. 2021年安全员-C证(陕西省)考试内容及安全员-C证(陕西省)找解析
  8. Unity制作贪吃蛇小游戏
  9. uniPush2.0 消息推送
  10. iOS开发 数据存储之WCDB的使用