思路是,读取鼠标滚轮的滚动倾向,改变相机的视角域(fieldOfView)。

但是,仅仅改变视角域是不行的,因为如果物体在视野边缘,在放大的过程中,也就是视角域缩小的过程中,

物体就可能跑到视野以外去了。因此,还必须将相机对准物体。

因此,首先,将相机对准物体,随物体运动而运动。然后,驱动相机视角域和滚轮滚动相关联。

以下代码是控制相机对准物体的脚本,有一个成员变量 target,它是Transform类型的,也就是变换类型的对象,实际上是变换类型对象的引用(指针)。

using UnityEngine;
using System.Collections;public class LookAtControl : MonoBehaviour {public Transform target;// Update is called once per framevoid Update () {transform.LookAt(target);}}

将这个脚本给了相机之后,点击相机,在inspector面板的脚本部分,会看见一个Target域。

将要对准的物体,即Cube拖到这个Target域里。

这时候在Target域里就出现了Cube(Transform),如下图所示

这很好理解。声明了一个Transform对象(引用)——target,那它具体是什么,是不明的。在unity editor中,将Cube拖到Target域中,就给了它一个Cube的Transform对象。相当于是将一个具体的对象给了对象的指针。因为target是函数tansform.LookAt()的参数,这个参数明确了,函数就可以执行了。也就是,相机对准了物体。

相机对准物体之后,我们就可以放心大胆地改变视角域来放大或缩小物体。

创建一个ZoomDrive脚本,用来关联鼠标滚轮滚动和视角域的改变,代码如下:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class ZoomDrive : MonoBehaviour {// Use this for initializationvoid Start () {}// Update is called once per framevoid Update () {if ( Input.GetAxis ("Mouse ScrollWheel") > 0 ) {GetComponent<Camera> ().fieldOfView--;}if ( Input.GetAxis ("Mouse ScrollWheel") < 0 ) {GetComponent<Camera> ().fieldOfView++;}}}

随着鼠标滚轮滚动趋势的不同,视角域相应改变,达到放大或缩小效果。我认为Input.GetAxis()函数,就是是读取鼠标键的运动趋势的,包括左键按住后的运动趋势和滚轮滚动的趋势。因为已经将相机对准了物体,再也不怕物体会跑到视野以外了。尽情得滚动吧!

unity 实现了鼠标滚动放大和缩小物体暨拉近拉远相机的效果相关推荐

  1. Unity3D——学习分享(十三)鼠标滚轮控制视野拉近拉远效果

    通过鼠标的滚轮控制摄像机视野的拉近拉远效果 游戏中常常见到视野的拉近拉远效果,比如英雄联盟中就可以通过鼠标滚轮进行视野的拉近与拉远,同时你也会发现在视野进行拉近拉远到一定程度时,在进行操作就不起作用了 ...

  2. JavaFX鼠标滚动放大缩小图片

    一.鼠标滚动放大缩小图片 package cn.util;import java.io.File; import javafx.application.Application; import java ...

  3. C# Chart折线图使用鼠标滚轮放大、缩小和平移曲线方式

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 一. Chart折线图使用鼠标滚轮放大.缩小和平移曲线 1.添加鼠标滚轮事件 2.初始化有关参数 3.添加鼠标按下.弹起和移 ...

  4. Unity 实现简单的相机跟随和鼠标滚轮拉近拉远视野

    1.脚本挂载在Main Camera 上 ,相机跟随的实现主要是让相机的位置和玩家的位置的差值始终保持不变. 2.实现鼠标滚轮拉近拉远视野,要先测试一下自己鼠标滚轮前滑后滑的正负值,每个鼠标不一定相同 ...

  5. unity实现吃鸡摄像头,自动拉近拉远视距,不被遮挡物遮盖人物效果

    实现类似摄像头,遇到遮挡物自动拉近拉远视距,不被遮挡物遮盖人物的效果 效果图 一.简介 二.基本层级 三.核心脚本 四.寒暄 效果图 传入的时gif图,帧率有所降低,不过能看清楚 这是旋转时的效果 这 ...

  6. Unity的摄像机拉近拉远和旋转脚本实现

    摄像机是Unity3d里面一定要用到的.所以熟悉摄像机的使用也是能掌握unity3d的基础. 这里详细介绍一个摄像机脚本,脚本的功能类似与魔兽争霸的鼠标滚轮拉近拉远以及按住右键移动鼠标旋转视野. 涉及 ...

  7. Unity 镜头拉近拉远 和旋转视角

    自己使用的是 Unity2018和VS2019版. 向主相机添加FollowPlayer类. 下面呈现代码 这里有小Bug, 拉近拉远和旋转视角无法同时使用,后续会进行更改完善 public clas ...

  8. unity实现摄像机拉近拉远视野

    近期做项目时遇到需要实现摄像机视野拉近拉远的效果 用鼠标滚轮实现摄像机视野拉近拉远 代码如下: private float mouseX; private float mouseY; void Upd ...

  9. 【Qt+FFmpeg】鼠标滚轮放大、缩小、移动——解码播放本地视频(三)

    上一期我们实现了播放.暂停.重播.倍速功能,这期来谈谈如何实现鼠标滚轮放大缩小和移动:如果还没看过上期,请移步 [Qt+FFmpeg]解码播放本地视频(一)_logani的博客-CSDN博客[Qt+F ...

最新文章

  1. GSM协议编号及其内容
  2. 【转载】Python对接六大主流数据库,只需三步
  3. php 获取汉字,php 获取汉字长度
  4. linux中mongo的导出数据,Linux下mongodb安装及数据导入导出教程(示例代码)
  5. Apache 配置虚拟主机
  6. when is valid from and valid to filled in SAP IBASE buffer table
  7. echarts鼠标事件以及自定义数据获取
  8. Javascript高级程序设计第二版第十一章--DOM2,DOM3--笔记
  9. 【PyTorch】中view()==>相当于numpy中resize()、reshape()的功能
  10. jQuery插件实现网页底部自动加载-类似新浪微博
  11. 米莱狄机器人怎么那么多_米莱狄究竟应该怎么玩?
  12. lbe android,LBE安全大师极速版
  13. AES-128\192\256加密算法及其安全脆弱分析
  14. 爬虫基础以及 re,BeatifulSoup,requests模块使用
  15. 58-高级路由:双点双向重分发
  16. 拓嘉启远:拼多多38“福女节”优惠如何参与
  17. HDWiki的兼容性问题
  18. 商业综合体电气综合管理平台技术方案
  19. 文保数据-历史文化名城、名街、重点保护单位名单+空间分布数据
  20. 块、内联、内联块都有哪些及其特点

热门文章

  1. 【webview】微信和PC监听浏览器关闭和刷新(亲测可用)
  2. ArcGIS——使用符号级别区分重叠的面图层
  3. 【Derivation】随机过程及应用(三) - 高斯分布/正态分布的期望和方差
  4. JavaScript求最大的岛屿面积
  5. STM32U5,意法半导体新打造的超低功耗MCU旗舰版
  6. 几行JS代码防止网站在QQ和微信被举报
  7. 计算机加密怎么设置方法,如何设置电脑密码?手把手教你如何设置电脑Windows密码...
  8. 游戏对战匹配逻辑小结
  9. cad2011 2010闪退问题
  10. 软件工程—思考项目开发那些事(一)