当前位置: 首页 > news >正文

【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.lryc.cn/news/253783.html

相关文章:

  • CoDeF视频处理——视频风格转化部署使用与源码解析
  • ubuntu server 20.04 备份和恢复 系统 LTS
  • NFC对物联网开发的影响及用途
  • 企业级SQL开发:如何审核发布到生产环境的SQL性能
  • linux 手动安装移植 haveged,解决随机数初始化慢的问题
  • 如何使用llm 制作多模态
  • k8s(二):Pod
  • Python 字典详解(dict)
  • IPoIB在国产并行系统上的实现与优化
  • 东南大学与OpenHarmony携手共建开源生态,技术俱乐部揭牌成立并迎来TSC专家进校园
  • NPU、CPU、GPU算力及算力计算方式
  • 华清远见嵌入式学习——C++——作业6
  • k8s安装学习环境
  • RepidJson将内容写入文件简单代码示例
  • golang构建docker镜像的几种方式
  • golang使用sip协议 用户名和密码注册到vos3000
  • 第4章 互联网
  • 【JavaWeb】前端工程化(VUE3)
  • JAVA基础知识:异常处理
  • PostGIS学习教程十:空间索引
  • LeetCode 13 罗马数字转整数
  • 【动态规划】LeetCode2111:使数组 K 递增的最少操作次数
  • SpringCloud面试题——Nacos
  • leetcode:统计感冒序列的数目【数学题:组合数含逆元模版】
  • 外贸建站平台工具推荐?做海洋建站的平台?
  • 【智能家居】三、添加语音识别模块的串口读取功能点
  • 物联网开发(一)新版Onenet 基础配置
  • qt/c/c++文件操作总结
  • 表示你的shell未被正确配置以使用conda activate--换成清华源anaconda
  • VT-MRPA1-151-1X/V0/0控制2FRE16模块式模拟放大器