【Unity动画】为一个动画片段添加事件Events

动画不管播放到那一帧,我们都可以在这里“埋伏”一个事件(调用一个函数并且给函数传递一个参数,参数在外部设置,甚至传递一个物体)!

嗨,亲爱的Unity小伙伴们!你是否曾想过为你的动画增添一些特殊的瞬间,让它们更有生命力?那么,Animation Events就是你的神奇法宝!本文将带你深入了解Unity动画事件的方方面面。

 

 

1. 动画片段的Events 事件介绍

在谈论Unity动画事件之前,让我们首先了解一下它是如何工作的。动画事件允许你在动画的播放过程中,在指定的关键帧上执行脚本中的函数。这意味着你可以在动画的不同时刻触发自定义的逻辑,为角色、场景或其他元素注入更多生命力。

2. 实际应用场景举例

2.1 音效触发

想象一下,你的游戏角色挥动武器的瞬间,能否在这个瞬间播放一段炫酷的音效?通过Animation Events,你可以轻松实现这一点。

然后创建一个脚本,脚本必须挂在场景种播放动画的游戏对象上!

函数名必须和外边Function的名字一样

如:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class EventaddFrame : MonoBehaviour
{public void PlaySoundEffect(int para){Debug.Log("播放到第15帧了,开始播放声音" + para);}}

2.2 角色攻击判定

或许你希望在角色攻击动作的某一帧上进行攻击判定,检测是否击中敌人。是的,通过Animation Events,你可以在这一关键时刻触发判定逻辑。

public void AttackHitCheck() { // 在这里添加攻击判定的逻辑 }

3. 具体添加方式

3.1 打开动画窗口

首先,在Unity编辑器中,打开动画窗口。你可以通过双击导入的模型文件或选择模,然后点击"Open Animation Window"按钮来打开。

3.2 选择动画片段

在动画窗口中,选择你希望添加事件的具体动画片段。

3.3 添加事件

右键点击帧,选择"Add Event"。在事件视图中,设置事件的触发时间、调用函数名以及可能的参数。

4. 注意事项

为了确保一切顺利运行,请注意以下事项:

  • 函数的访问权限: 确保你的脚本函数是公共函数,以便Animator系统能够访问。

  • 事件的触发时机: 仔细选择事件的触发时间,确保它在正确的关键帧上。

  • Funtion的名字:必须是和函数名一样

  • Object参数:是传递一个游戏物体到函数种,函数需要一个变量接收

  • 脚本必须挂在:播放动画的游戏物体上

5. 示例代码

下面是一个简单的示例代码,展示了如何在脚本中定义函数:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class EventaddFrame : MonoBehaviour
{public void PlaySoundEffect(int para){Debug.Log("播放到第15帧了,开始播放声音" + para);}public void AttackHitCheck(float para){ // 在这里添加攻击判定逻辑 Debug.Log("播放到第25帧了,开始攻击" + para);}
}

6. 案例

6.1 刀光闪耀

在角色挥动武器的动画中,通过Animation Events触发刀光特效的闪耀,为战斗场景增色不少。

6.2 对话系统触发

在角色表情变化的动画中,通过Animation Events触发对话系统,使得角色动画更具交互性。

6.3 播放音效

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

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

相关文章

常用性能工具与性能分析

iperf3 iperf3是一个用于测量网络带宽和性能的工具。它支持客户端-服务器模式,通过在客户端和服务器之间进行数据传输来评估网络的吞吐量、延迟和丢包率等指标。 iperf3的基本使用方法: 1. 安装iperf3: 首先,你需要在客户端和…

WPF halcon 机器视觉

1 鼹鼠的故事第14集 鼹鼠与智能房 鼹鼠无意中坐进了一辆小汽车,小汽车开进了一所智能住宅。鼹鼠看到房主在智能房里,享受着现代化的服务。趁着主人看电视的时候,鼹鼠也享用了一顿丰盛的智能晚餐。 小编大胆的畅想,这些食物 前一秒…

创建conan包-打包现有二进制文件

创建conan包-打包现有二进制文件 1 Packaging Existing Binaries1.1 Packaging Pre-built Binaries1.2 Downloading and Packaging Pre-built Binaries 本文是基于对conan官方文档Packaging Existing Binaries翻译而来, 更详细的信息可以去查阅conan官方文档。 1 P…

Ubuntu开机出现Welcome to emergency mode解决办法

问题描述 笔记本电脑安装了windows 10和ubuntu 16.04双系统,windows系统关机时按电源键强制关机,再次开机进入Ubuntu系统时无法进入图形界面,出现Welcome to emergency mode。 问题分析 异常关机导致文件系统受损,依据提示使用…

上传文件获得下载链接方法:直链!直链!

!非 百度网盘 不是直接用网盘下载,要用直链,百度上有很多方法。 我自己研究了个,跳过百度网盘输密码进网页的方法 还是先还是要把文件上传网盘让后搜索网盘获取直链的方法(那百度网盘举例) 地址 https:…

数据结构:字典树(前缀树,Trie树),压缩字典树(Radix)

字典树Trie Tree 字典树也称前缀树,Trie树。在 Elasticsearch 的倒排索引中用的也是 Trie 树。是一种针对字符串进行维护的数据结构。 字典树是对词典的一种存储方式,这个词典中的每个“单词”就是从根节点出发一直到某一个目标节点的路径,…

<JavaEE> 多线程编程中的“等待和通知机制”:wait 和 notify 方法

目录 一、等待和通知机制的概念 二、wait() 方法 2.1 wait() 方法的使用 2.2 超时等待 2.3 异常唤醒 2.4 唤醒等待的方法 三、notify() 方法 四、notifyAll() 方法 五、wait 和 sleep 的对比 一、等待和通知机制的概念 1)什么是等待和通知机制&#xff1f…

EM32DX-E4【C#】

1外观: ecat总线,分布式io 2电源: 靠近SW拨码:24V 中间:0V 靠近面板:PE接地 3DI: 6000H DI输入寄存器 16-bit (16位输入) 00H U8 子索引总数 01H Unsigned16 IN1…

事务管理 springboot

事务是一组操作的集合 它是一个不可分割的工作单位 这些操作 要么同时成功要么同时失败 Spring事务管理 #Spring事务管理日志 logging: level: org.springframework.jdbc.support.JdbcTransactionManager: debug

【深度学习】回归模型相关重要知识点总结

回归分析为许多机器学习算法提供了坚实的基础。在这篇文章中,我们将总结 10 个重要的回归问题和5个重要的回归问题的评价指标。 一、线性回归的假设是什么 线性回归有四个假设: 线性:自变量(x)和因变量(y&…

JWT 认证机制

1. Session 认证的局限性 Session 认证机制需要配合 Cookie 才能实现。由于 Cookie 默认不支持跨域访问,所以,当涉及到前端跨域请求后端按口的时候,需要做很多额外的配置,才能实现跨域 Session 认证。 注意: 1&#xf…

CoreDNS实战(一)-构建高性能、插件化的DNS服务器

1 概述 在企业高可用DNS架构部署方案中我们使用的是传统老牌DNS软件Bind, 但是现在不少企业内部流行容器化部署,所以也可以将Bind替换为 CoreDNS ,由于 CoreDNS 是 Kubernetes 的一个重要组件,稳定性不必担心,于此同时还可将K8S集…

linux系统中安装nginx到指定目录

linux系统中安装nginx到指定目录 下载要求版本的nginx源码包 上传并解压nginx源码包 # 在/opt/app目录下创建nginx解压安装目录 cd /opt/app mkdir nginx# 切换到解压目录下 cd /opt/app/nginx# 解压 tar -zxvf nginx-1.24.0.tar.gz编译安装 # 在/opt/app/nginx路径下&…

智能优化算法应用:基于社会群体算法无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用:基于社会群体算法无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用:基于社会群体算法无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.社会群体算法4.实验参数设定5.算法结果6.参考…

【unity3D】unity中如何查找和获取游戏物体

💗 未来的游戏开发程序媛,现在的努力学习菜鸡 💦本专栏是我关于游戏开发的学习笔记 🈶本篇是unity中游戏物体的查找与获取 这里写自定义目录标题 获取当前物体的基本属性查找其它物体- 通过名称查找其它物体- 通过标签查找- 通过类…

PostgreSQL 连接更新操作

假设有两个表,table_a 和 table_b,它们有一个共同的列 common_column,我们想要通过连接这两个表并根据某些条件更新 table_a 的列。 -- 创建表 table_a CREATE TABLE table_a (id SERIAL PRIMARY KEY,common_column INT,data_a VARCHAR(255)…

使用UART和USART在STM32上进行双向通信

在本文中,我们将深入了解如何在STM32上使用UART(通用异步收发传输器)和USART(通用同步异步收发传输器)实现双向通信。UART和USART是常见的串口通信协议,通常用于与其他设备进行数据传输。我们将重点介绍如何…

基于PaddleSeg开发的人像抠图web api接口

前言 基于PaddleSeg开发的人像抠图web api接口,提取官方代码,适配各种系统,通过api的接口进行访问。 环境要求 1、Python3.7以上 2、源码(文章最后下载) 源码结构 测试module.py中添加如下代码: if __na…

java中IntStream.range()的用法实例?

IntStream.range()是Java中java.util.stream.IntStream类提供的一个静态方法,用于生成一个顺序的整数范围。它可以用于创建一个包含指定起始值(包含)和结束值(不包含)之间所有整数的流。 下面是一个使用IntStream.ran…

字符串函数strlen的用法详解及其相关题目

strlne函数的使用 一.strlen函数的声明二.strlen函数的头文件三.相关题目代码1代码2题目1题目2题目3题目4题目5题目6 一.strlen函数的声明 size_t strlen ( const char * str );二.strlen函数的头文件 使用strlen函数我们需要使用以下头文件 #include <string.h>三.相…