在Unity中抖动相机镜头的不同方式

作者:Vivek Tank

出处:节选自Vivek Tank的《Different Ways Of Shaking Camera In Unity》

在Unity中抖动相机镜头的不同方式

目的

这篇推文的主要目是让开发者了解Unity3D中的Camera Shake。

想要你的游戏体验更加真实吗?

想为你的游戏添加一些屏幕震动的效果吗?

看这篇推文就对了!

抖动相机镜头是一种增强游戏真实体验的好方法。这能够增强一部分真实的游戏交互体验,以下面的图片为例:

所以,如果你想学习到在游戏中添加这类相机抖动的方法,那么你不应该错过这篇推文~

在文章中,会给大家分享3种添加相机抖动的方法。

1. 通过编写脚本

首先在Unity中设置一个这样的场景。

-创建一个名为Explodestar的空游戏对象和子游戏中的粒子系统,这样能够更富有表现力。

-创建一个名为Explodestar的脚本,将其附加到ExplodeStar gameobject上,在玩游戏时播放粒子系统。

-创建另一个名为CameraShake的脚本,并将其附加到要提供抖动效果的相机上。

在这里,我用Coroutine摇动相机。

Woooooooo!屏幕在抖动了对吧!

这是相机抖动最简单快捷的方法。

可是……等等!

它会有一些限制:

不可以用任何方式旋转相机

无法控制粗糙度(roughness)

它的原理是每帧移动相机,有时候使用这种协同程序会比较笨拙。所以如果对相机抖动的平滑性有更高要求的话,最好不要使用这种方法。

让我们用另一种方法试试看!

2. 使用动画

首先在Unity中设置这样的场景。

-将Animator添加到主摄像头并创建2个动画,并在该Animator中抖动

-在ideal animation中开始录制,并将相机设置到其原始位置

-在抖动的动画中,每隔两帧移动相机的位置以便进行抖动

-然后去Animator中创建一个触发器抖动(trigger shake)

-从空闲转为抖动,取消选中“has exit time”复选框,并将转换时间设置为1

现在进行从抖动到空闲的转换,并将转换时间设置为1,但不取消选中“has exit time”

现在创建一个名为ShakeWithAnimation的空对象并向其添加ShakeWithAnimation脚本,并在子节点中使用粒子系统以使其更有效。

OH YEAH~屏幕又开始抖动啦~超棒!你现在学会了另一种抖动相机的方法了~

……

……

……

啊不对,再等等……

那粗糙度(roughness)怎么办?

有没有办法可以用动画控制?

你猜!

让我们用最后一种办法试试看!

3. 使用插件

首先在Unity中制作新场景。

-现在去Asset store下载名为EZ Camera Shake的插件(本文原作者强烈推荐,但是如果你喜欢,也可以使用其他的插件)。

-完成EZ Camera Shake的下载后,将其导入你的场景。添加EZ Camera Shake文件夹到场景中。

-添加EZ Camera Shake中的Camera Shaker脚本到主相机中,并且设置你想要的变量。

-现在创建空对象并将其命名为ExplodeHeart。

-现在给子的粒子系统一个effective look。

-现在创建并添加ExplodeHeart脚本。

-将EZCameraShake命名空间(namespace)添加到脚本中。

屏幕又开始抖动啦! 而且相比起来画面更加流畅对吧~

可是……

这是不是代表前两种抖动相机的方式并不好?

恰恰相反,最后一种方式在运行的时候会给存储带来更大的负担,所以如果你对画面抖动的平滑度和粗糙度要求没有那么高,那么前两种方法也是可行的。

所有的方法都要根据游戏本身进行选择。

锵锵锵!今天换个新的结尾~

不知道大家想看什么类型的文章呢?现在发起一个小投票~

请pick一下你想看到的推文吧~小编会努力为大家翻译喜欢的推文的~

(小声)如果有还没翻译好但是想看的文章也可以告诉小编哟。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180921B1IMQM00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券