温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Unity - Cinemachine怎样实现相机抖动

发布时间:2021-11-15 14:50:09 来源:亿速云 阅读:1086 作者:柒染 栏目:大数据

本篇文章为大家展示了Unity - Cinemachine怎样实现相机抖动,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

普通相机抖动脚本较易实现,但在使用cinemachine相机下,其Transform组件不可被代码修改,那么Cinemachine的相机抖动如何实现呢?小编对实现相机抖动的三大步骤进行系统讲解:

设置流程

项目背景:一款2D像素动作游戏,我们操控着Player(必须带有Collider组件),游戏相机为 Cinemachine 2DCamera (关于其配置方法此处不做赘述,推荐文章在末尾参考处)

1. 在相机上添加监听脚本

在我们使用的虚拟相机 CM vcam1 上添加组件:AddComponent-> CinemachineImpulse Listener

  • CinemachineImpulse Listener : 监听脚本内震动信号(方法调用) ,使得 抖动在此相机上发生

    • Channel Mask:通道遮罩,此处最好默认为EveryThing

    • Gain:可获得震动信号的数目,0为屏蔽,1表示某时段仅能进行一个抖动运动

    • Use 2D Distance:用于2D游戏,忽略相机Z轴的抖动

Unity - Cinemachine怎样实现相机抖动

2. 在震动信号发生物体上添加脚本

震动信号发生物体( 调用震动函数的物体 )为Player,因此需要在Player上添加组件:AddComponent-> Cinemachine Collision Impulse Source (注:必须挂到含Collider的物体上),然后在Raw Signal右侧齿轮-> New Noise Settings 添加 震动配置器 ,默认名CM vcam1 Raw Signal

  • Cinemachine Collision Impulse Source :含有 抖动函数 、 震动配置器 的关键脚本

    • Raw Signal: 震动配置器 ,配置 震动参数 的关键部件,我们打开刚上面新建的CM vcam1 Raw Signal,可看到震动方式的各类参数。我们以Position Y,即上下抖动为例,添加Components后可设置其 Frequency震频 及 Amplitude震幅 ,并且勾选右侧方框可将其设置为 正弦波

    • Attack:抖动开始的变化曲线及时间

    • Sustain Time: 抖动的持续时间

    • Decay:抖动衰退的变化曲线及时间

Unity - Cinemachine怎样实现相机抖动

Unity - Cinemachine怎样实现相机抖动

3. 调用震动方法:

在Player内引用震动核心脚本,并在合适位置调用震动方法

private Cinemachine.CinemachineCollisionImpulseSource MyInpulse;
private void Start(){    MyInpulse = GetComponent<Cinemachine.CinemachineCollisionImpulseSource>();}
private void Update(){    //按下右键产生相机抖动,抖动方式依照上面CM vcam1 Raw Signal内配置信息    if (Input.GetMouseButtonDown(1))        MyInpulse.GenerateImpulse();}

至此,我们在游戏内操控Player,按下右键即可实现相机抖动。当然除了上面无参的 GenerateImpulse() 方法,还有两个带参的方法:

//假若使用传递velocity的方法,其震动方式为velocity和CM vcam1 Raw Signal的混合public void GenerateImpulse(Vector3 velocity);public void GenerateImpulse(Vector3 position, Vector3 velocity);

此外,还有可能出现bug:还尚未调用震动函数,游戏开始时就自动产生抖动。其产生原因博主尚未在对应脚本内发现,但解决方式为关闭Player上的Cinemachine Collision Impulse Source脚本

总述

Cinemachine中实现相机抖动的基本流程:

  • 在虚拟相机上添加 监听脚本 CinemachineImpulse Listener

  • 在Player上添加震动 核心脚本Cinemachine Collision Impulse Source ,并添加、设置 震动配置器

  • Player脚本合适位置 调用震动函数

本例仅介绍了单Position方向上的抖动,读者可按需配置抖动的Position、Rotation、发生时间、维持时间、衰退时间等,实现自己想要的效果

Unity - Cinemachine怎样实现相机抖动


上述内容就是Unity - Cinemachine怎样实现相机抖动,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注亿速云行业资讯频道。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI