当前位置: 首页 > news >正文

Unity3d 以鼠标位置点为中心缩放视角(正交模式下)

思路整理:

缩放前:

缩放后:

记录缩放前鼠标的屏幕坐标 A,计算鼠标位置对应的世界坐标 A_world

缩放完成后,根据当前屏幕下A所对应的世界坐标A1_world

计算A1_world 和 A_world 的偏移量

移动摄像机

代码:

private void ScaleBaseMousePos(){//缩放前鼠标位置对应的世界坐标 A点Vector3 aimPos = Camera.main.ScreenToWorldPoint(new Vector3(Input.mousePosition.x, Input.mousePosition.y, Camera.main.nearClipPlane));//缩放前屏幕位置存储Vector2 mousePos = Input.mousePosition;//缩放nowOriSize = Camera.main.orthographicSize - wheel * 50.0f;Camera.main.orthographicSize = Mathf.Clamp(nowOriSize, minOriSize, maxOriSize);//缩放后A点应该对应的屏幕坐标 A1点Vector3 newMousePos = Camera.main.ScreenToWorldPoint(new Vector3(mousePos.x, mousePos.y, Camera.main.nearClipPlane));transform.position += (aimPos - newMousePos);}

http://www.lryc.cn/news/443165.html

相关文章:

  • Git清除某文件所有历史提交记录
  • jacoco生成单元测试覆盖率报告
  • 【CSS Tricks】如何做一个粒子效果的logo
  • 如何使用ssm实现基于Javaweb的网上花店系统的设计与实现
  • Elastic 的 OpenTelemetry PHP 发行版简介
  • TCP 和 UDP 协议的区别?
  • 【PHP】使用thinkphp5查询最大值时,把varchar类型字段转换成数字
  • Java 正则表达式详解
  • MySQL篇(窗口函数/公用表达式(CTE))(持续更新迭代)
  • Jira Cloud涨价5%-20%,钉钉项目Teambition成优选替代
  • Python语言基础教程(下)4.0
  • 【HTTP】构造HTTP请求和状态码
  • Delta Lake如何使用
  • 面试题 - parallelStream() 有什么缺点 - ForkJoinPool,它和传统的线程池(如 ThreadPoolExecutor)的区别
  • 切换淘宝最新镜像源npm详细讲解
  • STM32F407单片机编程入门(十二) FreeRTOS实时操作系统详解及实战含源码
  • 网络安全-利用 Apache Mod CGI
  • ACE之ACE_Reactor_Notify
  • 【小沐学GIS】blender导入OpenStreetMap城市建筑(blender-osm、blosm)
  • 数字IC设计\FPGA 职位经典笔试面试整理--语法篇 Verilog System Verilog(部分)
  • 【EtherCAT】CiA402简介
  • 嵌入式Linux:模块化编程
  • 【两方演化博弈代码复现】:双方演化博弈的原理、概率博弈仿真、相位图、单个参数灵敏度演化
  • Selenium打开浏览器后闪退问题解决
  • 【图论】最短路应用
  • Spring Boot实战:使用策略模式优化商品推荐系统
  • Navicat导入Sql文件至Mysql数据库,事务失效
  • 篮球运动场景物体检测系统源码分享
  • Docker实操:安装MySQL5.7详解(保姆级教程)
  • git reflog