【Unity 学习笔记】动画系统(续)和事件

2023-11-11

在上一篇笔记中,我们使用Unity的动画系统实现了移动和跳跃的动画,在这一篇笔记中我们将使用Unity事件的方式来实现受伤和死亡的动画。

首先创建一个受伤动画。由于素材中没有现成的受伤动画,我们只能手动创建一个简陋的闪烁动画。主要现实在角色受伤后的无敌时间人物闪烁的效果。

步骤:新建一个动画片段。点击Add Property,添加Sprite中的Color。

调整一下关键帧,是动画时常变为1秒。

在0.5秒处,我们将Color.a修改为0.5,这样就实现了角色的闪烁动画。

同时,可以将人物调整为红色,如此更符合普遍认知。

接着,我们在动画控制器中新建一个层级,调整其权重至1,并且将混合模式修改为Addictive。

因为我们这次使用的时间的方式触发动画,所有新建了一个条件参数hurt。

如果hurt触发了,则执行对应事件。

 我们需要手动添加UnityEvents,该类包含在UnityEngine.Events里,使用前需先引用命名空间。

添加受伤和死亡事件:


    [Header("事件")]

    public UnityEvent<Transform> onTakeDamage;

    public UnityEvent onDie;

返回unity查看一下。

可以看到我们的事件已经在Inspector窗口中显示出来了。

点击加号就可以添加相应的方法了,该方法会在事件触发时调用。

那么怎样才能触发事件呢,回到我们的脚本文件,通过Invoke()方法可以触发事件。

onDie?.Invoke();

一旦事件触发,其下的所有方法都会执行。

接着开始设置受伤动画的条件,一旦受伤,条件参数hurt就需要触发,我们需要用SetTrigger()实现这个功能。

    public void PlayHurt()
    {
        anim.SetTrigger("hurt");
    }

将其封装到一个方法里,并添加到事件中,hurt参数的传递就是随着事件的发生而发生。

这样受伤动画就实现了。

死亡动画和受伤动画的制作步骤相同。

首先添加条件参数die,绑定死亡事件,事件触发,死亡动画播放,不做重复演示。

同时,在动画片段中我们也可以添加事件。Unity已经为我们自动写好了模板,方便我们在动画开始、动画播放中、动画结束时实现各种各样的方法。

命名一下脚本文件,打开。

根据提示取消注释,添加需要的代码。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【Unity 学习笔记】动画系统(续)和事件 的相关文章

  • 【教程】Win10安装SQLServer2005出现服务启动失败的问题解决

    Win10安装SQLServer2005时需要注意以下几点 1 先在控制面板中安装好IIS 2 右键SQLServer2005安装文件夹中的setup exe 设置兼容模式为Win7兼容模式 且以管理员身份运行 3 安装过程中 遇到弹窗提示
  • Windows 下最实用的 Gvim 配置

    一直以来被称为编辑器之神的 vim 在 Windows 下很难发挥其强大的功能 本文从实用的角度阐述如何调校出一个比较好用的 vim 不过仍然要说明下 在众多 vim 构建版本中 Mac OS 平台的 MacVim 是我认为最好用的一个版本

随机推荐

  • Android基础小知识

    一 TextView的hint与wrap content 二 tools context tools text等作用 tools context tools text等不会被打包进apk 只是用来在布局时候预览渲染效果的 tools con
  • 阿里云爆发史上最严重宕机事故。。。

    阿里云香港区于2022年12月18日出现故障 多个香港和澳门的网站受到影响 包括Linux中国的官网 https linux cn 澳门金融管理局 澳门银河 莲花卫视 澳门水泥厂等关键基础设施营运者的网站 澳觅和MFood等外卖平台 以及澳
  • FileReader简介

    前言 FileReader是一种异步文件读取机制 结合input file可以很方便的读取本地文件 input file 在介绍FileReader之前 先简单介绍input的file类型
  • Chrome插件链接

    常用Chrome插件整理 其它好用的插件 欢迎大家留言分享 输入ID下载点击下载 1 已安装插件里可以查看ID 2 安装链接里面也有 https chrome google com webstore detail idm integrati
  • vivado烧录程序搜索不到设备,烧录卡住不动

    烧录程序找不到设备或者设备不可用 烧录过程卡主不动 可以排除驱动问题的前提 解决方法 1 先观察jtag的指示灯 红灯有问题 可能fpga电源未开 接口松动 观察板子的初始程序是否启动成功 如果没有启动成功 jtag指示器也会是绿的 但是搜
  • springboot 过滤器异常处理,filter exception catch

    参考地址 java How to manage exceptions thrown in filters in Spring Stack Overflow
  • 经验积累①:关于设备程序的版本迭代方案详解

    关于设备程序的版本迭代方案详解 一 案例描述 对于嵌入式应用层来说 需要对设备的很多参数进行保存 为了使得这些配置参数掉电不丢失 因此在flash中生成配置文件用于保存设备参数 每当设备重启后 将参数读出 重发给设备 由于生成了可变的配置文
  • event_base_loop

    函数 int event base loop struct event base int 等待事件被触发 然后调用它们的回调函数 这是 event base dispatch的更灵活版本 默认情况下 这个循环会一直运行 直到没有添加的事件
  • 在macOS下安装和配置MySQL数据库

    一 到社区下载安装包 官网地址 MySQL MySQL Community Downloadshttps dev mysql com downloads MySQL Download MySQL Community Serverhttps
  • 身边的逻辑学——过度概括(1)

    过度概括 overgeneralization 概括与过度概括有何不同 概括知识是暂定的 因为它基于对经验的概括 原则上 下一个经验很可能出乎你的意料之外 使你 我们每个人 不得不对先前概括得出的结论感到怀疑 了解概括的本质有助于发现真理
  • C/C++ vs2017连接MySQL数据库 - 增删改查(详细步骤)

    在开发中 数据库是必不可少 这篇文章将介绍使用C C 如何进行连接MySQL数据库 并实现增删改查操作 注意 此篇文章所讲的是C C 如何操控MySQL进行简单的 常用的 增删改查 的操作 目录 一 配置Visual Studio 二 C
  • 不可不说的Java“锁”事

    前言 Java提供了种类丰富的锁 每种锁因其特性的不同 在适当的场景下能够展现出非常高的效率 本文旨在对锁相关源码 本文中的源码来自JDK 8 使用场景进行举例 为读者介绍主流锁的知识点 以及不同的锁的适用场景 Java中往往是按照是否含有
  • ACL访问控制列表原理及实例

    目录 一 ACL概述 1 ACL访问控制列表作用 2 ACL访问控制列表工作原理 3 ACL访问控制列表处理过程原则 二 ACL访问控制列表类型 1 标准访问控制列表 2 扩展访问控制列表 三 配置实例 1 要求 用标准访问控制列表 vla
  • qt modules public internal 私有头文件 private

    qt对源码进行了分层 把数据成员都单独拉到一个 p h的头文件中 形成internal部分的接口类Qt之二进制兼容 qt p h 文件的用途是什么 qt不建议用户使用internal部分的接口类 因为不同平台和不用版本的qt interna
  • sort函数的时间、空间复杂度

    sort函数进行排序的时间复杂度为n log2n 原理 不是简单的快排 STL的sort 算法 数据量大时采用Quick Sort 分段递归排序 一旦分段后的数据量小于某个门槛 为避免Quick Sort的递归调用带来过大的额外负荷 就改用
  • Grade for Android(从 Gradle 和 AS 开始)

    http www open open com lib view open1451536597026 html 正如大家所见 这是本英文书 而由于国内的gradle翻译资料不全 所以特次开辟专栏 翻译gradle for android这本书
  • 基于JWT的springboot权限验证技术实现

    JWT简介 Json Web Token JWT JSON网络令牌 是为了在网络应用环境间传递声明而制定的一种基于JSON的开放标准 RFC 7519 JWT是一个轻便的安全跨平台传输格式 定义了一个紧凑的自包含的方式用于通信双方之间以 J
  • 通过Navicat创建ER图技巧笔记

    1 通过已有数据库逆向创建模型时 切忌一次生成所有表ER图 建议先将所有表添加到模型 然后依次从上至下添加到图表 2 单张图表可以通过图表模式进行重命名 在左侧图表窗口最上方 右键当前图表 gt 重命名 gt 修改 3 单张图表不宜过大 4
  • 解决vscode jupyter启动kernel错误的方案Failed to connect to Jupyter notebook.

    最近在vscode里面运行 ipynb文件的时候经常性地会出现报错情况 报错的图片内容如下 Failed to connect to Jupyter notebook 经过网上一番查阅方法之后 终于将配件搭建好了 解决方法为输入如下命令 p
  • 【Unity 学习笔记】动画系统(续)和事件

    在上一篇笔记中 我们使用Unity的动画系统实现了移动和跳跃的动画 在这一篇笔记中我们将使用Unity事件的方式来实现受伤和死亡的动画 首先创建一个受伤动画 由于素材中没有现成的受伤动画 我们只能手动创建一个简陋的闪烁动画 主要现实在角色受