Unity实现角色受到攻击后屏幕抖动的效果

文章目录

  • 实现效果
  • 摄像机
    • 抖动脚本
  • 玩家受伤
  • 其他文章

实现效果

首先看一下实现效果。
在这里插入图片描述

摄像机

我们要使用屏幕抖动,使用的是CinemachineVirtualCamera这个组件,这个组件需要在包管理器中进行导入。
导入这个组件之后,创建一个Chinemachine-2D Camera,接下来我们修改ChinemachineVirtualCamera的Noise,将其设置为Basic Multi Channel Perlin,然后设置Noise Profile为6D Wobble,6D Wobble表示在摄像机位置和方向上的随机扰动。这种扰动会使摄像机在六个自由度上(三个位置坐标和三个旋转角度)产生随机的摇摆效果。也就是说,通过调整6D wobble的参数,我们可以在实现抖动效果的同时,还可以使摄像机在位置和方向上产生更自然的随机运动。这样可以增强场景的真实感和动态感。

接下来,我们通过调整"6D wobble"的幅度和频率来控制摄像机的抖动效果。较大的幅度和频率值将会产生更明显的随机抖动。具体可以根据你的游戏需求来调整这些参数,以达到目标效果。

然后将Amplitude Gain和Frequency Gain属性设置为0。Amplitude Gain参数表示摄像机震动的幅度增益。该参数控制着摄像机震动的强度。较大的Amplitude Gain值会产生更强烈的震动效果,而较小的值则会减弱震动效果。

g

抖动脚本

创建一个脚本,命名为FollowCamera,然后修改内容为以下代码,挂载到CM vcam1物体上。
在脚本中,我们通过修改震动强度和频率两个属性来实现振动,同时还设置了一个持续时间,通过在调用该函数传递不同参数,来实现不同的效果。当然我也写了默认值,方便了直接调用。

using UnityEngine;
using Cinemachine;public class FollowCamera : MonoBehaviour
{private CinemachineVirtualCamera virtualCamera;private CinemachineBasicMultiChannelPerlin noiseProfile;private void Start(){virtualCamera = GetComponent<CinemachineVirtualCamera>();noiseProfile = virtualCamera.GetCinemachineComponent<CinemachineBasicMultiChannelPerlin>();}/// <summary>/// 摄像机振动/// </summary>/// <param name="duration">持续时间</param>/// <param name="amplitude">幅度</param>/// <param name="frequency">频率</param>public void ShakeCamera(float duration=0.25f, float amplitude=2, float frequency = 1){if (noiseProfile != null){noiseProfile.m_AmplitudeGain = amplitude;noiseProfile.m_FrequencyGain = frequency;Invoke(nameof(StopShaking), duration);}}private void StopShaking(){if (noiseProfile != null){noiseProfile.m_AmplitudeGain = 0;noiseProfile.m_FrequencyGain = 0;}}
}

玩家受伤

修改你的玩家受伤部分的函数,使其调用follow Camera的ShakeCamera()方法。

public class Player : Person
{[Header("摄像机")]public FollowCamera followCamera;public override void Start(){if(followCamera == null){followCamera=GameObject.Find("CM vcam1").GetComponent<FollowCamera>();}}public override void BeHit(float damage, Vector3 attacker){base.BeHit(damage, attacker);followCamera.ShakeCamera();}
}

其他文章

Unity实现2D游戏跟随摄像机(平滑移动)
Unity2D实现左右移动的敌人角色
Unity创建一个可移动的2D角色

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/87293.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CH2--x86系统架构概览

2.1 OVERVIEW OF THE SYSTEM-LEVEL ARCHITECTURE 图中的实线箭头表示线性地址&#xff0c;虚线表示段选择器&#xff0c;虚线箭头表示物理地址 2.1.1 Global and Local Descriptor Tables 全局描述符表 (GDT) GDT是一个全局的段描述符表&#xff0c;它存储在系统内存中的一个固…

MYSQL逻辑架构

文章目录 MYSQL逻辑架构1. 逻辑架构剖析1.1.1 MYSQL的逻辑架构---三层1.1.2 连接层---第一层1.1.3 服务层---第二层1.1.4 引擎层---第三层 2 服务器处理客户端请求---三部分3. SQL执行流程3.0 SQL语法顺序3.1 MYSQL中的SQL执行流程3.1.1 查询缓存3.1.2. 解析器3.1.3. 优化器3.1…

虹科方案 | LIN/CAN总线汽车零部件测试方案

文章目录 摘要一、汽车零部件测试的重要性&#xff1f;二、虹科的测试仿真工具如何在汽车零部件测试展露头角&#xff1f;三、应用场景**应用场景1&#xff1a;方向盘开关的功能测试****应用场景2&#xff1a;各类型电机的控制测试****应用场景3&#xff1a;RGB氛围灯的功能测试…

详解MySQL索引+面试题

前言: 📕作者简介:热爱编程的小七,致力于C、Java、Python等多编程语言,热爱编程和长板的运动少年! 📘相关专栏Java基础语法,JavaEE初阶,数据库,数据结构和算法系列等,大家有兴趣的可以看一看。 😇😇😇有兴趣的话关注博主一起学习,一起进步吧! 一、索引概述…

芯片SoC设计你了解吗?

数字IC设计根据岗位性质一般包含SOC设计&#xff0c;前端设计&#xff0c;ASIC设计&#xff0c;逻辑设计&#xff0c;IP设计&#xff0c;CPU设计等。 有人说&#xff1a;做IP设计就是翻译官&#xff0c;做SOC设计就是连连看。 SoC设计是做什么的&#xff1f;与IP设计有什么不同…

docker系列(7) - Dockerfile

文章目录 7. Dockerfile7.1 Dockerfile介绍7.2 指令规则7.3 指令说明7.3.1 RUN命令的两种格式7.3.1 CMD命令覆盖问题7.3.2 ENTRYPOINT命令使用7.3.3 ENV的使用 7.4 构建tomcat Dockerfile案例7.4.1 准备原始文件7.4.2 编写Dockerfile7.4.3 构建镜像7.4.4 验证镜像 7.5 构建jdk基…

【深度学习】ONNX模型多线程快速部署【基础】

【深度学习】ONNX模型CPU多线程快速部署【基础】 提示:博主取舍了很多大佬的博文并亲测有效,分享笔记邀大家共同学习讨论 文章目录 【深度学习】ONNX模型CPU多线程快速部署【基础】前言搭建打包环境python多线程并发简单教程基本教程ONNX模型多线程并发 打包成可执行文件总结 前…

springboot实战(七)之jackson配置前后端交互下划线转驼峰对象序列化与反序列化

目录 环境&#xff1a; 1.驼峰转下划线配置 1.1单个字段命名转化使用JsonProperty注解 1.2单个类进行命名转化 3.全局命名策略配置 2. 序列化以及反序列化 2.1序列化 2.2反序列化 3.自定义序列化与反序列化 在Web开发中&#xff0c;JSON&#xff08;JavaScript Obje…

Linux命令历史记录管理:使用history命令提高工作效率

文章目录 引言1.1 关于history命令1.2 history命令的作用和用途 基本用法2.1 查看历史命令列表2.2 执行历史命令2.3 使用历史命令编号 历史命令记录和保存3.1 历史命令的存储位置3.2 修改历史命令记录数量3.3 清除历史命令记录 搜索历史命令4.1 使用关键字搜索4.2 按日期和时间…

【Zblog搭建博客网站】windows环境搭建属于自己的博客并发布上线 - cpolar内网穿透

文章目录 1. 前言2. Z-blog网站搭建2.1 XAMPP环境设置2.2 Z-blog安装2.3 Z-blog网页测试2.4 Cpolar安装和注册 3. 本地网页发布3.1. Cpolar云端设置3.2 Cpolar本地设置 4. 公网访问测试5. 结语 1. 前言 想要成为一个合格的技术宅或程序员&#xff0c;自己搭建网站制作网页是绕…

数据结构题型10-链栈

//参考博客&#xff1a;https://blog.csdn.net/weixin_37716512/article/details/104068102 #include <iostream> //引入头文件 using namespace std;typedef int Elemtype;#define Maxsize 10 #define ERROR 0 #define OK 1typedef struct Linknode {Elemtype data;…

9月24日,每日信息差

今天是2023年09月24日&#xff0c;以下是为您准备的12条信息差 第一、米博发布无滚布洗地机升级7系V7Pro、Q7Pro 第二、我国首个投入商业开发的大型页岩气田产气量突破600亿立方米。该气田作为我国首个投入商业开发的大型页岩气田&#xff0c;累计产气量日前已突破600亿立方米…

vue2/vue3 v-if与v-show的区别 | 触发的生命周期

文章目录 v-if 和 v-show 的区别触发的生命周期普通变量组件v-if vue2/vue3行为基本一致v-show v-if 和 v-show 的区别 v-if"false"时&#xff0c;在该位置创建一个注释节点&#xff0c;用来标识元素在页面中的位置。在值发生改变的时候&#xff0c;通过diff&#x…

【Redis GEO】1、地理位置类型的基本用法

1、Redis GEO介绍 Redis GEO 主要用于存储地理位置信息&#xff0c;并对存储的信息进行操作&#xff0c;该功能在 Redis 3.2 版本新增。 Redis GEO 操作方法有&#xff1a; geoadd&#xff1a;添加地理位置的坐标。geopos&#xff1a;获取地理位置的坐标。geodist&#xff1…

adb 命令集

adb 查看app启动时间 1.清除时间 adb shell am start -S com.android.systemui/.SystemUIService2.启动应用并记录 adb shell am start -W <PACKAGE_NAME>/.<ACTIVITY_NAME>TotalTime: 491 adb 查看分辨率、dpi 分辨率 adb shell wm sizePhysical size: 1080…

DS18B20温度传感器

DS18B20简介 DS18B20 是由 DALLAS 半导体公司推出的一种的“一线总线&#xff08;单总线&#xff09;”接口的温度传感器 这种一线总线就是 三线制 SPI DS18B20的 配置寄存器&#xff1a; TM 是测试位&#xff0c;出厂设置就被设置为0&#xff0c;不需要改动&#xff0c; R1、R…

Golang开发--defer关键字

defer是Go语言中的一个关键字&#xff0c;用于延迟执行函数或方法的调用。defer语句会将其后面的函数或方法调用推迟到当前函数返回之前执行&#xff0c;无论函数是正常返回还是发生异常。 func main() {defer fmt.Println("defer 1")defer fmt.Println("defer…

企业架构LNMP学习笔记61

Nginx作为tomcat的前段反向代理&#xff1a; 在实际业务环境中&#xff0c;用户是直接通过域名访问&#xff0c;基于协议一般是http、https等。默认tomcat运行在8080端口。一般会通过前端服务器反向代理到后端的tomcat的方式&#xff0c;来实现用户可以通过域名访问tomcat的we…

微信收款码费率0.38太坑了

作为一个有多年运营经验的商家&#xff0c;我本人在申请收款功能时曾经走过了不少弯路。我找遍了市面上的知名的支付公司&#xff0c;但了解到的收款手续费率通常都在0.6左右&#xff0c;最低也只能降到0.38。这个过程吃过不少苦头。毕竟&#xff0c;收款功能是我们商家的命脉&…

AI聊天ChatGPT系统源码卡密验证开源版

ChatGPT卡密验证版源码是一个基于PHP7.4和MySQL5.6的聊天AI源码&#xff0c;它不仅支持暗黑模式、反应速度极快&#xff0c;而且充值方面采用后台生成卡密方式&#xff0c;方便快捷&#xff0c;如果您有能力将其接入在线支付&#xff0c;即可进一步拓展充值方式&#xff0c;为更…