6-1. 摄像机跟随及攻击抖动实现

Cinemachine

安装 cinemachine

添加 cinemachine

添加完之后,需要将 Player 作为 Cinemachine 的 Follow 对象

之后摄像机默认就能跟随玩家了,我们还可以调整一些参数

通过设置 Dead Zone 给摄像机一个缓冲值,中心点没有离开缓冲区域的时候,摄像机是不会移动的

cinemachine 扩展

Cinemachine 有很多扩展,像素游戏可以使用 CinemachinePixelPerfect,CinemachineConfiner2D 可以限制摄像机的移动范围,CinemachineImpluseListener 可以是屏幕发生震动

给 cinemachine 添加区域限定

首先给 cinemachine 添加 CinemachineConfiner2D 扩展

首先画出需要限定的范围(注意必须是一个 trigger),然后它绑定到 Cinemachine Confiner 2D 上面,之后摄像机就不会离开 bounds 画的区域了

为了以后切换场景后可以自动找到 Bounds,我们给 Bounds 对象添加一个 Bounds 标签,然后给 Virtual Camera 绑定一个 CameraControl 组件

这段代码在初始的时候获取了 CinemachineConfiner2D 组件,然后在 Start 的时候获取摄像机的边界,并赋值给 CinemachineConfiner2D,注意赋值完之后需要 InvalidateCache

震动反馈

添加扩展

首先给 cinemachine 添加 CinemachineImpulseListener 扩展

因为我们是 2D 游戏,所以要勾选 Use 2D Distance

添加振动源

把振动源放到 Vitual Camera 上面

使用 ScriptableObject 产生事件

使用刚才创建好的 VoidEventSO 生成一个 Event,起名叫 CameraShake Event

不管是 玩家、怪物受伤或者死亡,都需要产生事件

振动源监听 ScriptableObject 的事件

项目相关代码

代码仓库:https://gitee.com/nbda1121440/2DAdventure.git

标签:20240227_1336

posted @   hellozjf  阅读(64)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示