using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class Zoom : MonoBehaviour
{private Vector3 targetScreen;// 目标物体的屏幕空间坐标  private Vector3 targetWorld;// 目标物体的世界空间坐标  private Transform target;// 目标物体的空间变换组件  private Vector3 mouseScreen;// 鼠标的屏幕空间坐标  private Vector3 offset;// 偏移 private Vector3 start;//初始位置float maxX,maxZ,minX,minZ;void Awake() {target = transform;start = transform.position;}private void Update(){ScrollWheelControl();//GetKeyDown();}IEnumerator OnMouseDown(){// 把目标物体的世界空间坐标转换到它自身的屏幕空间坐标   targetScreen = Camera.main.WorldToScreenPoint(target.position);// 存储鼠标的屏幕空间坐标(Z值使用目标物体的屏幕空间坐标)   mouseScreen = new Vector3(Input.mousePosition.x, Input.mousePosition.y, targetScreen.z);// 计算目标物体与鼠标物体在世界空间中的偏移量   offset = target.position - Camera.main.ScreenToWorldPoint(mouseScreen);// 鼠标左键按下   while (Input.GetMouseButton(0)){// 存储鼠标的屏幕空间坐标(Z值使用目标物体的屏幕空间坐标)mouseScreen = new Vector3(Input.mousePosition.x, Input.mousePosition.y, targetScreen.z);// 把鼠标的屏幕空间坐标转换到世界空间坐标(Z值使用目标物体的屏幕空间坐标),加上偏移量,以此作为目标物体的世界空间坐标targetWorld = Camera.main.ScreenToWorldPoint(mouseScreen) + offset;//将物体的高度固定targetWorld = new Vector3(targetWorld.x, 3.029f, targetWorld.z);//限制可视区域if (targetWorld.x > maxX)targetWorld = new Vector3(maxX, targetWorld.y, targetWorld.z);if (targetWorld.z > maxZ)targetWorld = new Vector3(targetWorld.x, targetWorld.y, maxZ);if (targetWorld.x < minX)targetWorld = new Vector3(minX, targetWorld.y, targetWorld.z);if (targetWorld.z < minZ)targetWorld = new Vector3(targetWorld.x, targetWorld.y, minZ);// 更新目标物体的世界空间坐标   target.position = targetWorld;// 等待固定更新yield return new WaitForFixedUpdate();}}void ScrollWheelControl()//鼠标滑轮滚动控制物体大小{float scaleOffset = Input.GetAxis("Mouse ScrollWheel");if ((transform.localScale.x + scaleOffset) <= 2 && (transform.localScale.x + scaleOffset) >= 1){transform.localScale = new Vector3(transform.localScale.x + scaleOffset, transform.localScale.y + scaleOffset, transform.localScale.z + scaleOffset);maxX = 3 * (transform.localScale.x - 1);maxZ = 3 * (transform.localScale.x - 1);minX = -3 * (transform.localScale.x - 1);minZ = -3 * (transform.localScale.x - 1);if (scaleOffset < 0)//缩放的时候逐渐返回原点(防止缩放后视界停留在最大视界外){transform.position = Vector3.MoveTowards(transform.position, new Vector3(0, 3.029f, 0), 0.5f);}}}void GetKeyDown()//按键操作集合{if (Input.GetKeyDown(KeyCode.R)){transform.localScale = new Vector3(1,1,1);transform.position = start;}}}

3D沙盘地图的拖动与缩放相关推荐

  1. vue 小地图放大缩小_实景3D卫星地图

    3D地图依据高程数据等对地表进行渲染,实现地表的起伏,模拟出真实的三维场景,让你有如身临其境般的感觉. (注:Bigemap 3D地图是一个三维地图浏览功能,是基于高程数据进行的实时渲染,无法进行下载 ...

  2. AR 3D Map地图技术

    AR 3D Map地图技术 工业AR的创业相对于消费级AR的创业难很多,这里有一个市场的天然门槛和壁垒,对工业场景不理解,就做不出符合工业场景的AR产品. 人才壁垒 工业AR创业对创始人和联合创始人的 ...

  3. 地图的平移、缩放的实现(android版)

    一.平移地图 移动地图的原理是利用手指在屏幕上拖动的距离,转换为在地图上距离,把地图坐标加上偏移的距离实现地图移动. 由于地图是绘制到Bitmap上的,所以地图移动和缩放的过程只要改变Bitmap的矩 ...

  4. html沙盘图插件,3D Map Generator(3D沙盘设计PS插件)V1.0 正式版

    3D Map Generator(3D沙盘设计PS插件)是一款很优秀好用的3D沙盘设计辅助工具.如果你需要一款好用的沙盘设计工具,小编带来的这款3D Map Generator软件是很不错的选择,功能 ...

  5. Axure中利用JSBOX制作3D高德地图组件(进阶)

    JSBOX 是一个面向 Axure 提供便捷开发方式的组件,我们将用它来制作可以显示三维白模的高德地图组件,下面是制作步骤,可以先 点击此处预览效果 在 上一篇 里,你已经通过简单的三步实现了在Axu ...

  6. Android拖动和缩放图片

    Android拖动和缩放图片 2014年5月9日 我们在使用应用其中常常须要浏览图片.比方在微信其中.点击图片之后能够对图片进行缩放. 本博客介绍怎样对图片进行拖拽和缩放.这首先要了解Android中 ...

  7. android edittext_Android 支持拖动、缩放的自定义软键盘

    点击上方"Android技术杂货铺",选择"标星" 干货文章,第一时间送达! 开篇 本次给大家分享的是支持拖动.缩放的自定义原生软键盘.不同于市面上的自定义软件 ...

  8. 凯立德3d实景地图_360全景地图、3D全景地图、三维实景地图哪个好?

    360全景地图.3D全景地图.三维实景地图哪个好?对于小迪来说,它们都统称为全景地图. 其实,360全景地图对于很多人来说其实并不算陌生,现在很多导航应用都上线了360全景地图功能.无论是国外的谷歌, ...

  9. echart 三维可视化地图_揭秘720°三维全景3D实景地图制作技术

    近两年来三维全景3D实景地图在三维虚拟现实领域中占有相当大的地位.目前的三维720°线上三维实景展示基本都是通过商迪3D三维全景建模与3d全景地图技术制作.例如:VR游戏.智慧城市规划项目.智慧房地产 ...

最新文章

  1. Sublime Text3软件安装教程
  2. Linux下安装Jboss
  3. chromium浏览器_Chromium版Edge浏览器正式上线:安装包仅2.2MB
  4. XML文件与实体类的互相转换
  5. 客户端检测的含义和方法
  6. 域名商2014年度报告:35互联域名总量增至33.4万
  7. Object.definePropety
  8. Web应用中优化IBatis性能
  9. 修改对象的某个属性的值_如何理解Python中的面向对象编程?
  10. Windows 10 安装 Oracle 10g
  11. 20.SPDY_QUIC_HTTP2_HTTP3
  12. 618网购盛宴开启,容联AI+CC为企业构建电商“新基建”中台
  13. HDU 2036 (平面几何 多边形面积)
  14. Windows中MSOCache文件夹
  15. python 判断大于等于且小于等于_关于if语句:检查python中值是否大于、小于或等于零的更好方法...
  16. R语言使用Predict函数计算指定连续变量和风险比HR值的关系、基于限制性立方样条分析方法、限制性立方样条cox回归模型
  17. 云场景实践研究第40期:网聚宝
  18. 微信自动回复小程序(有手就行)
  19. Postman搭建mock server接口
  20. 倍分法DID详解(一):传统DID

热门文章

  1. Pascal voc2007安装和pytorch使用
  2. Android多媒体开发-stagefright及AwesomePlayer相关知识梳理
  3. 基于JAVA毕业设计的客户关系系统的设计与实现
  4. (5)(5.10) 室内飞行指南
  5. MAC 自定义通知提醒 (定时提醒喝水)
  6. mac版本的xshell远程ssh工具
  7. 饥荒联机版连不上服务器_饥荒本地联机|饥荒联机版无法连接到klei服务器怎么回事_234游戏网...
  8. MQL5 编程基础:字符串
  9. 健康养生管理系统案列/APP/小程序/网站
  10. 基于B/S的网络考试系统的设计与实现(附:源码 论文 课件)