unity 实现了鼠标滚动放大和缩小物体暨拉近拉远相机的效果
来源:互联网 发布:工作量统计软件 编辑:程序博客网 时间:2024/04/28 21:50
思路是,读取鼠标滚轮的滚动倾向,改变相机的视角域(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()函数,就是是读取鼠标键的运动趋势的,包括左键按住后的运动趋势和滚轮滚动的趋势。因为已经将相机对准了物体,再也不怕物体会跑到视野以外了。尽情得滚动吧!
0 0
- unity 实现了鼠标滚动放大和缩小物体暨拉近拉远相机的效果
- 【Unity】代码实现视野的旋转和视野的拉近和拉远的效果
- Unity的摄像机拉近拉远和旋转脚本实现
- 鼠标滚动实现图片的放大和缩小(C#2.0)
- unity通过改变相机视野实现UI元素放大缩小的效果
- Unity中摄像机绕物体旋转和拉近拉远视角的操作
- C#(winform)实现图片的无损放大缩小【点击鼠标滚动键放大缩小】
- 鼠标滚动实现图片放大缩小[转]
- Unity 相机的移动旋转以及拉近拉远的原理
- Unity3D实现摄像机视野的拉远拉近和跟随主角旋转效果
- unity shader 实现自由放大缩小效果
- flex实现图片根据鼠标的滚动放大或缩小(以鼠标的的位置 为中心放大缩小)
- Unity鼠标拖拽旋转拉远拉近场景
- Unity鼠标拖拽旋转拉远拉近场景
- VP2.0物体放大缩小的实现
- 图片放大缩小,滚动鼠标
- 修改ArcMap默认的鼠标滚轮放大缩小,AE实现修改鼠标滚轮放大缩小
- 鼠标滚轮实现放大缩小
- 仿微信摇一摇实现播放音乐
- 静态方法中调用非静态方法
- 3.2指令格式
- Mybatis generatorConfiguration自动生成工具
- 第一次
- unity 实现了鼠标滚动放大和缩小物体暨拉近拉远相机的效果
- JQuery校验是否上传文件以及文件格式是否正确
- react/react native 组件的刷新机制
- genymotion选择Use customAndroid SDK tools就会卡死
- Timer延时任务的坑与handler实现延时任务对比
- 欢迎使用CSDN-markdown编辑器
- APP开发实战162-减少预置图片所占空间大小方法汇总
- 淘汰赛制
- 119. Pascal's Triangle II(unsolved)