【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.rhkb.cn/news/210582.html

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

相关文章

作业12.5

1.定义一个基类 Animal&#xff0c;其中有一个虛函数perform&#xff08;)&#xff0c;用于在子类中实现不同的表演行为。 #include <iostream>using namespace std; class Animal { private:int weight; public:Animal(){}Animal(int weight):weight(weight){}virtual …

【MVP矩阵】裁剪空间、NDC空间、屏幕空间

裁剪空间概述 裁剪空间是一个顶点乘以MVP矩阵之后所在的空间&#xff0c;Vertex Shader的输出就是在裁剪空间上&#xff08;划重点&#xff09; NDC空间概述 接上面&#xff0c;由GPU自己做透视除法将顶点转到NDC空间 两者的转换 透视除法将Clip Space顶点的4个分量都除以…

C语言学习笔记之数组篇

数组是一组相同类型元素的集合。 目录 一维数组 数组的创建 数组的初始化 数组的使用 数组在内存中的存储 二维数组 数组的创建 数组的初始化 数组的使用 数组在内存中的存储 数组名 数组名作函数参数 一维数组 数组的创建 type_t arr_name [const_n]; //type_…

51单片机制作数字频率计

文章目录 简介设计思路工作原理Proteus软件仿真软件程序实验现象测量误差和范围总结 简介 数字频率计是能实现对周期性变化信号频率测量的仪器。传统的频率计通常是用很多的逻辑电路和时序电路来实现的&#xff0c;这种电路一般运行较慢&#xff0c;而且测量频率的范围较小。这…

java--抽象类的常见应用场景:模板方法设计模式

1.模板方法设计模式解决了什么问题&#xff1f; ①解决方法中存在重复代码的问题。 2.模板方法设计模式的写法 1、定义一个抽象类。 2、在里面定义2个方法 ①一个是模板方法&#xff1a;把相同代码放里面去。 ②一个是抽象方法&#xff1a;具体实现交给子类完成。 分析&…

前端项目环境的搭建

一、下载并且安装Node&#xff08;不安装node&#xff0c;就安装nvm。nvm安装教程&#xff09;&#xff1a; 1.官网下载Node&#xff1a;https://nodejs.org/en/ 2.测试nodejs安装是否成功&#xff1a; 在windows powerShell中输入node -v 和 npm -v&#xff0c;看到版本号就…

Python编程技巧:多层for循环的高级应用

更多资料获取 &#x1f4da; 个人网站&#xff1a;ipengtao.com Python的for循环结构是编程中最基础也是最常用的控制结构之一。通过for循环&#xff0c;可以轻松遍历数据集合和执行重复的操作。然而&#xff0c;当我们面对多层for循环时&#xff0c;性能和可读性可能会成为挑…

【Vue】Linux 运行 npm run serve 报错 vue-cli-service: Permission denied

问题描述 在Linux系统上运行npm run serve命令时&#xff0c;控制台报错&#xff1a; sudo npm run serve project50.1.0 serve vue-cli-service serve sh: 1: vue-cli-service: Permission denied错误截图如下&#xff1a; 原因分析 该错误是由于vue-cli-service文件权限不…

Java中的Future源码讲解

JAVA Future源码解析 文章目录 JAVA Future源码解析前言一、传统异步实现的弊端二、what is Future ?2.1 Future的基本概念2.2Future 接口方法解析2.2.1 取消任务执行cancel2.2.2 检索任务是否被取消 isCancelled2.2.3 检索任务是否完成 isDone2.2.3 检索任务计算结果 get 三、…

系统运维安全之病毒自检及防护

一、前言 Linux勒索病毒&#xff08;Linux ransomware&#xff09;是一种最令人恶心的计算机恶意病毒&#xff0c;它以侵入Linux系统&#xff0c;捆绑文件并要求支付赎金才能释放文件为主要目的&#xff0c;破坏用户的数据&#xff0c;造成数据讹诈。Linux勒索病毒它们的存在已…

全网最新最全面的Appium自动化:Appium常用操作之app操作

APP操作方法: appium支持对手机上的app进行管理和操作&#xff0c;有如下方法&#xff1a; 1、install_app(self,app_path,**options): 安装app,app_path为安装包路径 2、remove_app(self,app_id,**options): 卸载app&#xff0c;app_id为app包名 3、is_app_installed(self,b…

VScode异常处理 (因为在此系统上禁止运行脚本)

在使用 VScode 自带程序终端的时候会报出"系统禁止脚本运行的错误" 这是由于 Windows PowerShell执行策略导致的 解决办法 管理员身份运行 Windows PowerShell执行&#xff1a;get-ExecutionPolicy1&#xff0c;显示Restricted2执行&#xff1a;Set-ExecutionPoli…

一文带你了解Java中synchronized原理

&#x1f308;&#x1f308;&#x1f308;今天给大家分享的是Java中 synchronized 的基本原理 清风的CSDN博客 &#x1f6e9;️&#x1f6e9;️&#x1f6e9;️希望我的文章能对你有所帮助&#xff0c;有不足的地方还请各位看官多多指教&#xff0c;大家一起学习交流&#xff…

国产接口测试工具APIpost

说实话&#xff0c;了解APIpost是因为&#xff0c;我的所有接口相关的文章下&#xff0c;都有该APIpost水军的评论&#xff0c;无非就是APIpost是中文版的postman&#xff0c;有多么多么好用&#xff0c;虽然咱也还不是什么啥网红&#xff0c;但是不知会一声就乱在评论区打广告…

MobaXterm连接相关

其实最终解决的方法&#xff0c;还是&#xff0c;因为要远程连接的是个局域网ip&#xff0c;我所在的ip和要连接的这个不在同一个局域网内&#xff0c;需要实验室搭的VPN才行。 甚至&#xff0c;我连防火墙都没关&#xff0c;也可以连接 至于修改密码&#xff0c;passwd&#…

沐风老师3DMAX键盘球建模方法详解

3DMAX键盘球建模教程 本教程给大家分享一个3dMax键盘球的建模方法过程。在学习本教程之前&#xff0c;大家需要对3dMax基本操作及建模知识有所掌握&#xff0c;还是那句话&#xff1a;做实例的前提是选学习基础知识和掌握3dMax的基本操作。 下面就给大家一步一步讲解演示3dMax…

Graphpad Prism10.1.0 安装教程 (含Win/Mac版)

GraphPad Prism GraphPad Prism是一款非常专业强大的科研医学生物数据处理绘图软件&#xff0c;它可以将科学图形、综合曲线拟合&#xff08;非线性回归&#xff09;、可理解的统计数据、数据组织结合在一起&#xff0c;除了最基本的数据统计分析外&#xff0c;还能自动生成统…

python socket编程7 - 使用PyQt6 开发UI界面新增实现UDP server和client单机通讯的例子

在第五篇中&#xff0c;简单实现了命令行下的 TCP/UDP server和client的单机通讯。 在第六篇中&#xff0c;实现了PyQt6开发界面&#xff0c;TCP协议实现的单机server和client的通讯功能。 这一篇&#xff0c;在第六篇的基础上&#xff0c;增加了UDP server和client的单机通讯功…

四川云汇优想:抖音直播等级怎么升级?

抖音直播&#xff0c;作为当前最热门的社交平台之一&#xff0c;其等级体系一直备受用户关注。如何在抖音直播中迅速提升等级&#xff0c;成为众多用户探讨的话题。在这篇文章中&#xff0c;我们将深入探讨抖音直播等级的升级机制、好处以及一些实用的技巧&#xff0c;助你在抖…

三、C语言常见概念

目录 1. C语言是什么&#xff1f; 3. 编译器的选择 3.1 编译和链接 3.2 编译器的对比 6. main函数 7. printf 和 库函数 8. 关键字介绍 8.1 什么是预编译&#xff1f; 8.2 static 的关键词作用&#xff1f; 8.3 const 的作用 8.4 voliate 的作用 8.5 typedef 的作用…