Unity实现瞄准镜效果

本文实例为大家分享了Unity实现瞄准镜效果的具体代码,供大家参考,具体内容如下

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;
    public GameObject obj;
    void Start()
    {
        //获取当前摄像机的视野范围 unity默认值60
        initFOV = Camera.main.fieldOfView;
    }

    void Update()
    {
        if (Input.GetMouseButton(0))
        {
            ZoomInView();
            //激活ui窗口
            obj.SetActive(true);
        }
        else
        {
            ZoomOutView();
            //失活ui窗口
            obj.SetActive(false);
        }
    }

    //放大摄像机的视野区域
    void ZoomInView()
    {
        if (Mathf.Abs(Camera.main.fieldOfView - (initFOV / zoomLevel)) < 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) < 0f)
        {
            Camera.main.fieldOfView = initFOV;
        }
        else if (Camera.main.fieldOfView + (Time.deltaTime * zoomOutSpeed) <= initFOV)
        {
            Camera.main.fieldOfView += (Time.deltaTime * zoomOutSpeed);
        }
    }
}

此脚本挂到unity主相机即可,可通过更改zoomLevel更改倍镜倍数。

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

(0)

相关推荐

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

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

  • Unity实现模型点击事件的方法

    模型点击事件监听 触发模型点击事件的必要条件 需要触发模型点击事件的模型身上必须要挂载Collider 组件 方法一 通过 OnMouseDown 函数监听(只能在PC端有效) 1.在Hierarchy 面板中右键,点击 3D Object->Cube 按钮,创建一个 Cube 模型 2.新建一个脚本,命名为"Test.cs"(代码如下) using System.Collections; using System.Collections.Generic; using Unity

  • 详解Unity使用ParticleSystem粒子系统模拟药水在血管中流动(粒子碰撞)

    一.前言 点关注不迷路,持续输出Unity干货文章. 嗨,大家好,我是新发. 之前我写了一篇Unity流体模拟的文章:<Unity流体模拟,支持粒子系统,支持流体碰撞交互(Obi Fluid插件使用教程)> 然后有同学私信我,问我能否做药剂打入血管的效果. 这个嘛,用ObiFluid可以做,不过我今天要尝试的,是用另一种方式:直接使用Unity的粒子系统来做. 二.最终效果 最终效果如下,效果虽然一般,不过制相对简单很多. 本文Demo工程已上传到CodeChina,感兴趣的同学可自行下载学习

  • Unity3D旧电视滤镜shader的实现示例

    实现思路 既然是要实现旧电视的后处理效果,那么只要回忆一下那些古旧的电视的显示效果然后进行模拟就可以了. 1.首先那种大头电视一般屏幕有一些曲率,并不是完全的一个平面,而且一般是向外凸起,这种凸起会造成中间的显示区域会比原来更近一些,边缘的显示区域会比原来更远一些.这种效果我们直接用简单的二次函数来实现. 2.那种老旧电视会有不断运动的噪声,我们直接使用噪声函数加上时间变量来实现. 3.屏幕上会有一些条纹效果,这种周期性的条纹效果一般用三角函数来实现. 当然不可能模拟的完全准确..也没有完全准确

  • Unity 如何通过反射给gameObject添加组件

    C#版本 public static Component AddComponent(GameObject go, string assembly, string classname) { var asmb = System.Reflection.Assembly.Load(assembly); var t = asmb.GetType(assembly + "." + classname); if(null != t) return go.AddComponent(t); else r

  • 详解Unity入门之GameObject

    GameObject和Component GameObject是游戏场景中真实存在的,而且有位置的一个物件 Component附属于GameObject,控制GameObject的各种属性 GameObject是由Component组合成的,Component的生命周期和GameObject息息相关.调用此GameObject的Destroy方法,它的子对象和对应的所有Component都会被销毁,但也可以一次只销毁一个Component 常见的Component: Component 作用 R

  • Unity之跑马灯抽奖效果单抽与连抽(附demo)

    本文主要介绍了Unity之跑马灯抽奖效果单抽与连抽,分享给大家,具体如下: 效果图 单次抽奖效果 跳过动画抽奖效果 三连抽抽奖效果 设计思路 点击按钮 ,根据需求(概率)计算本次抽奖获得物品模拟转动 (先加速后减速), 一段时间后停止连抽的情况下等所有奖品动画都表演完成才结束跳过动画设计,有跳过时抽奖速度直接到最大,并进入可中奖 场景搭建 一个按钮,一个组奖品放到一个父物体上. 奖品元素,有两种状态,一种旋转状态,一种中奖状态. 代码 using System; using System.Col

  • Unity给物体添加多个Tag的实现

    在unity中,我们经常通过给物体添加标签来判断这个物体是不是我们想要的 但是unity默认只能添加一个标签,那如果我们要给一个物体添加多个标签应该怎么办 首先,我们定义一个Tag.cs类,这个类用来存储物体的tag信息 public class Tags : MonoBehaviour{ public List<string> tags=new List<string>(); } 然后创建一个单例类TagManager.cs用来管理tag public class TagMana

  • Unity实现3D射箭小游戏

    Unity 小游戏:3D射箭,供大家参考,具体内容如下 前两周因为实训太忙,再加上自己对老师所讲的设计模式并不是很理解,所以就没有写博客.这次博客是记录3D射箭游戏的实现过程. 1. 准备资源 我是在网上找的弓与箭的资源,至于靶子,创建五个不同大小的同心圆柱体,如图所示: 需要注意的是,五个圆柱体并不在同一个平面上,这样才能够看清每一环的颜色,并且在检测碰撞时不会出现各种问题. 另外,如果靶子放得离相机太近,就没有射箭的感觉了:离相机太远,好像又看不清靶子了,然后我试着把靶子Material的S

  • Unity实现瞄准镜效果

    本文实例为大家分享了Unity实现瞄准镜效果的具体代码,供大家参考,具体内容如下 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 ini

  • unity制作瞄准镜效果

    使用unity制作瞄准镜,供大家参考,具体内容如下 一.创建场景 在Hierarchy窗口中使用Plane和Cube创建场景,并调整摄像机位置 二.使用步骤 1.在Hierarchy窗口中右击在UI中选择Image 2.将瞄准镜素材拖入Image的检视试图中Soure Image中 结果如下: (注意在导入图片时将图片类型更改为下图所示,更改完之后点击Apply) 3.调整瞄准镜位置 三.新建代码 代码如下(示例): using UnityEngine; using System.Collect

  • unity实现玻璃效果

    本文实例为大家分享了unity实现玻璃效果的具体代码,供大家参考,具体内容如下 一.使用Cubemap,做一个假反射 shader代码如下: Shader "Custom/glassShader" { Properties { _MainColor("Main Color",Color)=(1,1,1,1) _MainTex ("Base (RGB)", 2D) = "white" {} _Cube("Cube&qu

  • Unity实现喷漆效果

    本文实例为大家分享了Unity实现喷漆效果展示的具体代码,供大家参考,具体内容如下 喷漆功能 **应用场景:**如墙上的标语贴花,汽车上的喷漆等. 选择方案: 1.当然实现方法各式各异,最最最简单,也是最"不堪入目"的方法是直接给一个面片,然后获取喷漆位置,加上一个要喷漆表面法线方向的偏移,作为最终面片放置位置,当然,不要忘了设置面片的方向.这种方法虽然说简单,但是效果并不理想,会出经常现与其他物体穿插的情况,如果游戏中曲面太多,那么这个方案基本没法看. 2.对于个别特殊的需求来讲,比

  • unity实现流光效果

    本文实例为大家分享了unity实现流光效果的具体代码,供大家参考,具体内容如下 1.通过一些简单效果可以让我们更好的去理解shader,具体都在代码注释中: Shader "Unlit/MoveLightImage" { Properties { //主纹理 _MainTex ("Texture", 2D) = "white" {} //灯光纹理 _LightTex("Light Texture",2D)="whit

  • Unity 实现贴花效果的制作教程

    目录 一.前言 二.实现方式介绍 三.实现过程 检测UV位置并替换像素颜色: 修改替换信息为图片信息: 运行时使用复制贴图: 修改帧检测断触问题: 总结 一.前言 在云艾尔登法环时,看到地面上的血迹时,发现某些地方脱离的地面,似乎是通过面片的方式实现的效果.但是同时某些,不过这种类型的血迹有道具的效果,估计是为了实现碰撞检测的功能才选择了面片的方式 而其他的战斗痕迹的效果似乎是通过贴花来实现的,贴花的方式多种多样.而在Unity中,有一种给官方文档提供代码的解决方案.这里就在这些代码的基础上做一

  • Unity实现跑马灯效果的示例代码

    目录 一.效果 二.需要动画插件DOTween 三.脚本 1.每个格子上的脚本文件 2.管理脚本文件 一.效果 二.需要动画插件DOTween 下载地址 三.脚本 1.每个格子上的脚本文件 using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; using DG.Tweening; public class MarqueeUIItem : MonoBe

  • 详解Unity安卓共享纹理

    概述 本文的目的是实现以下的流程: Android/iOS native app 操作摄像头 -> 获取视频流数据 -> 人脸检测或美颜 -> 传输给 Unity 渲染 -> Unity做出更多的效果(滤镜/粒子) 简单通信 在之前的博客里已经说到,Unity 和安卓通信最简单的方法是用 UnitySendMessage 等 API 实现. Android调用Unity: //向unity发消息 UnityPlayer.UnitySendMessage("Main Cam

  • 游戏开发Unity2D图片任意形状破碎裂片效果展示

    目录 一.前言 二.效果演示 三.Demo工程下载 四.操作步骤 1.牙图片:SrpiteRenderer 2.碎裂:Explodable 3.多边形碰撞体组件:PolygonCollider2D 4.生成碎片:Generate Fragments 5.点击碎裂:ExplodeOnClick 6.碎裂爆破:ExplosionForce 7.碎了再碎:ExplodableFragments 结束语 一.前言 点关注不迷路,持续输出Unity干货文章. 嗨,大家好,我是新发. 2014年的某一天,我

随机推荐