服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - C# - Unity使用摄像机实现望远镜效果

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

2022-08-09 09:51阳尘子 C#

这篇文章主要为大家详细介绍了Unity摄使用像机实现望远镜效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

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

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
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使用摄像机实现望远镜效果

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

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

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

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

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

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

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

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

原文链接:https://blog.csdn.net/liujunjie612/article/details/45888373

延伸 · 阅读

精彩推荐
  • C#深入浅出23种设计模式

    深入浅出23种设计模式

    本文给大家详解23种设计模式,理解设计模式有助于在程序开发过程中灵活应用,需要的朋友可以参考下...

    编程技术网10742021-10-22
  • C#C#实现任务栏通知窗口

    C#实现任务栏通知窗口

    作为程序员在享受的同时我们也不禁要问:这到底是怎么实现的呢?本文就利用Visual Studio .Net C# 2005以及.Net框架绘图技术来实现这种任务栏通知窗口。...

    C#教程网10802021-10-29
  • C#WPF换肤设计原理浅析

    WPF换肤设计原理浅析

    这篇文章主要为大家详细介绍了WPF换肤设计原理,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    sunny90611932021-12-08
  • C#C#访问及调用类中私有成员与方法示例代码

    C#访问及调用类中私有成员与方法示例代码

    访问一个类的私有成员不是什么好做法,大家也都知道私有成员在外部是不能被访问的,这篇文章主要给大家介绍了关于C#访问及调用类中私有成员与方法...

    cnc4722022-02-24
  • C#C#学习笔记整理_变量等基础语法(必看篇)

    C#学习笔记整理_变量等基础语法(必看篇)

    下面小编就为大家带来一篇C#学习笔记整理_变量等基础语法(必看篇)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看...

    7592021-12-07
  • C#C#实现多线程写入同一个文件的方法

    C#实现多线程写入同一个文件的方法

    这篇文章主要介绍了C#实现多线程写入同一个文件的方法,涉及C#多线程操作文件读写的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下...

    我心依旧5912021-10-20
  • C#C#控制台应用程序中输出彩色字体

    C#控制台应用程序中输出彩色字体

    这篇文章主要为大家详细介绍了C#控制台应用程序中输出彩色字体的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    雲霏霏8612022-01-06
  • C#C#中结构体定义并转换字节数组详解

    C#中结构体定义并转换字节数组详解

    在写C#TCP通信程序时,发送数据时,只能发送byte数组,处理起来比较麻烦不说,如果是和VC6.0等写的程序通信的话,很多的都是传送结构体,在VC6.0中可以很方便的把...

    dafanjoy4382022-02-10