Unity使用摄像机实现望远镜效果

本文实例为大家分享了Unity使用摄像机实现望远镜效果的具体代码,供大家参考,具体内容如下

听起来挺酷炫,其实超简单,就是控制摄像机的fieldOfView:

using UnityEngine;
using System.Collections;

public class TelesopicView : MonoBehaviour {

 public float zoomLevel = 2.0f;
 public float zoomInSpeed = 100.0f;
 public float zoomOutSpeed = 100.0f;

 private float initFOV;

 void Start()
 {
 //获取当前摄像机的视野范围
 initFOV = Camera.main.fieldOfView;
 }

 void Update()
 {
 if(Input.GetMouseButton(0))
 {
 ZoomInView();
 }
 else
 {
 ZoomOutView();
 }
 }

 //放大摄像机的视野区域
 void ZoomInView()
 {
 if (Mathf.Abs(Camera.main.fieldOfView - (initFOV / zoomLevel)) < 3.0f)
 {
 Camera.main.fieldOfView = initFOV / zoomLevel;
 }
 else if (Camera.main.fieldOfView - (Time.deltaTime * zoomInSpeed) >= (initFOV / zoomLevel))
 {
 Camera.main.fieldOfView -= (Time.deltaTime * zoomInSpeed);
 }
 }

 //缩小摄像机的视野区域
 void ZoomOutView()
 {
 if (Mathf.Abs(Camera.main.fieldOfView - initFOV) < 3.0f)
 {
 Camera.main.fieldOfView = initFOV;
 }
 else if (Camera.main.fieldOfView + (Time.deltaTime * zoomOutSpeed) <= initFOV)
 {
 Camera.main.fieldOfView += (Time.deltaTime * zoomOutSpeed);
 }
 }
}

将脚本 TelescopicView 添加到 Main Camera 上。Zoom Level 可以调节视图能放大到什么程度;Zoom In Speed 调节视图的放大速度;Zoom Out Speed 调节视图缩小的速度。

运行游戏,当鼠标左键按下时,视图会放大,松开时,视图会慢慢恢复成原来的样子 :

当然,为了加强视觉效果,你也可以使用Unity自带的资源包,也可以自己设计望远镜视图图片:

调节参数,再次运行游戏。当鼠标左键按下时,望远镜的视图效果更逼真了(添加了光晕的效果):

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • Android自定义控件实现望远镜效果

    Android自定义控件今天要讲到的就是望远镜效果,那么什么是望远镜效果,我们不妨看看下方的动图,看完后,相信大家就有一定的认识了. 1.着色器 对于这种效果来说,其实实现起来挺简单的,但我们将会用到在三维软件中的着色器Shader,它是用来给空白图形上色的.用过PS的人,相信大家都知道里面有一个印章工具,印章的样式可以是图像,颜色,渐变色等.在Android里面,Shader的效果其实与他类似. public Shader setShader(Shader shader) 上面是Shader的

  • Unity使用摄像机实现望远镜效果

    本文实例为大家分享了Unity使用摄像机实现望远镜效果的具体代码,供大家参考,具体内容如下 听起来挺酷炫,其实超简单,就是控制摄像机的fieldOfView: using UnityEngine; using System.Collections; public class TelesopicView : MonoBehaviour { public float zoomLevel = 2.0f; public float zoomInSpeed = 100.0f; public float z

  • unity实现车方向盘转动效果

    本文实例为大家分享了unity实现车方向盘转动效果的具体代码,供大家参考,具体内容如下 效果: C#脚本如下: using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.EventSystems; public class NewBehaviourScript : MonoBehaviour, IDragHandler,IBeginD

  • unity实现屏幕上写字效果

    本文实例为大家分享了unity实现屏幕上写字效果的具体代码,供大家参考,具体内容如下 先建立一个RawImage,然后再在这个图片上加个LineRenderer组件,再建个材质球,把材质球的Shader改成Particles/Additive,把材质球拖给LineRenderer组件的Materials/Element 0(不拖也可以),最后再把代码拖给空物体即可,代码的Target是RawImage,下面的代码 using System.Collections; using System.Co

  • Unity实现物体左右移动效果

    本文实例为大家分享了Unity实现物体左右移动效果的具体代码,供大家参考,具体内容如下 效果如下 代码: using UnityEngine; using System.Collections; //Add this script to the platform you want to move. //左右移动的平台 public class MovingPlatform : MonoBehaviour { //Platform movement speed.平台移动速度 public floa

  • Unity实现3D循环滚动效果

    本文实例为大家分享了Unity实现3D循环滚动效果展示的具体代码,供大家参考,具体内容如下 然后通过SetDepthAndPosition这个方法,实现图片的空间空间展开 Z轴和Y轴,系数是一样的 经过上面设置,空间就摆开了 using UnityEngine; using System.Collections; using System.Collections.Generic; public class SelectRole : MonoBehaviour { public GameObjec

  • Unity实现卡牌翻动效果

    本文实例为大家分享了Unity实现卡牌翻动效果展示的具体代码,供大家参考,具体内容如下 事实上这是项目需要,我改的一个代码,实际上就是利用unity的一些基础属性实现其效果.啥也不多说了,先上原代码: /// Credit Mrs. YakaYocha /// Sourced from - https://www.youtube.com/channel/UCHp8LZ_0-iCvl-5pjHATsgw /// Please donate: https://www.paypal.com/cgi-b

  • Unity Shader实现描边OutLine效果

    本文实例为大家分享了Unity Shader实现描边OutLine效果的具体代码,供大家参考,具体内容如下 Shader实现描边流程大致为:对模型进行2遍(2个pass)绘制,第一遍(描边pass)在vertex shader中对模型沿顶点法线方向放大,fragment shader设置输出颜色为描边颜色:第二遍正常绘制模型,除被放大的部分外,其余被覆盖,这样就有了描边的效果. 实现代码如下: Shader "Custom/OutlineShader" { Properties { _

  • Unity实现老虎机滚动抽奖效果的示例代码

    直接看下效果图吧: 制作思路: 设计四张图片,五个点,每个图片同时向下一个点移动,到最后一个就回到0号点,以此循环. 场景搭建: 创建Image命名为Bg作为电视框背景: 创建Image命名Mask并添加Mask组件作为电视框内容显示遮罩框: 创建四个Image作为滚动图片: 创建开始抽奖按钮: PS:实际项目中可以根据需求来动态修改图片显示,以达到的控制每次抽奖奖品内容. 源码分享: using System.Collections; using UnityEngine; using Unit

  • Unity使用DoTween实现抛物线效果

    Unity使用DoTween实现抛物线效果,供大家参考,具体内容如下 概要 public partial class EMath { public static Vector3 Parabola(Vector3 start, Vector3 end, float height, float t) { float Func(float x) => 4 * (-height * x * x + height * x); var mid = Vector3.Lerp(start, end, t); r

随机推荐