123
This commit is contained in:
1 parent
2241642a97
commit
4216d27310
132 files changed
+3575
-137
No files matched your search
@@ -0,0 +1,198 @@
|
||||
# Unity 动画 Event 函数配置说明
|
||||
|
||||
本文档记录《召唤之战》当前动画片段需要配置的 Animation Event 函数名。
|
||||
|
||||
## 一、快速结论
|
||||
|
||||
当前项目实际使用的动画 Event 函数只有以下 3 个:
|
||||
|
||||
```text
|
||||
OnAttackEffect
|
||||
OnSkillHit1
|
||||
OnSkillHit2
|
||||
```
|
||||
|
||||
在 Animation Event 的 Function 下拉框中填写函数名时,**只填写名称,不要填写括号**。
|
||||
|
||||
---
|
||||
|
||||
## 二、普通攻击命中 Event
|
||||
|
||||
### 函数名
|
||||
|
||||
```text
|
||||
OnAttackEffect
|
||||
```
|
||||
|
||||
### 函数定义
|
||||
|
||||
```csharp
|
||||
public void OnAttackEffect()
|
||||
```
|
||||
|
||||
### 所属脚本
|
||||
|
||||
```text
|
||||
Assets/Script/UnitBase.cs
|
||||
```
|
||||
|
||||
### 用途
|
||||
|
||||
在普通攻击真正命中的那一帧调用一次,`UnitBase` 会根据单位的 `AttackType` 执行对应逻辑:
|
||||
|
||||
- 近战攻击:直接给目标造成伤害
|
||||
- 远程攻击:生成并发射飞行物
|
||||
- 攻击命中后:增加技能能量
|
||||
|
||||
### 当前已配置该 Event 的攻击动画
|
||||
|
||||
| 动画片段 | Event 函数名 | 当前 Event 时间(约) |
|
||||
|---|---|---:|
|
||||
| `Assets/Model/第一章/人类士兵/人类士兵-attack.fbx` | `OnAttackEffect` | 0.365 秒 |
|
||||
| `Assets/Model/第一章/人类士兵新/人类士兵-攻击.fbx` | `OnAttackEffect` | 0.343 秒 |
|
||||
| `Assets/Model/第一章/弓箭手/弓箭手攻击.fbx` | `OnAttackEffect` | 0.987 秒 |
|
||||
| `Assets/Model/第一章/精锐守卫士兵/Great Sword Slash.fbx` | `OnAttackEffect` | 0.464 秒 |
|
||||
| `Assets/Model/第二章/弓箭猎人/弓箭猎人攻击.fbx` | `OnAttackEffect` | 0.427 秒 |
|
||||
| `Assets/Model/第二章/狼人/狼人攻击.fbx` | `OnAttackEffect` | 0.548 秒 |
|
||||
| `Assets/Model/第二章/蓝色怪物/蓝色怪物动作-挥剑.fbx` | `OnAttackEffect` | 0.367 秒 |
|
||||
|
||||
### 狼人攻击必须配置
|
||||
|
||||
选择:
|
||||
|
||||
```text
|
||||
Assets/Model/第二章/狼人/狼人攻击.fbx
|
||||
```
|
||||
|
||||
在攻击命中帧添加:
|
||||
|
||||
```text
|
||||
OnAttackEffect
|
||||
```
|
||||
|
||||
参数:无。
|
||||
|
||||
如果狼人攻击动画没有配置这个 Event,狼人会播放攻击动作,但不会真正结算伤害。
|
||||
|
||||
---
|
||||
|
||||
## 三、人类士兵技能攻击 Event
|
||||
|
||||
人类士兵技能动画有两段命中,需要配置两个 Event。
|
||||
|
||||
### 第一段命中
|
||||
|
||||
```text
|
||||
OnSkillHit1
|
||||
```
|
||||
|
||||
函数定义:
|
||||
|
||||
```csharp
|
||||
public void OnSkillHit1()
|
||||
```
|
||||
|
||||
所属脚本:
|
||||
|
||||
```text
|
||||
Assets/Script/HumanSoldierSkill.cs
|
||||
```
|
||||
|
||||
用途:
|
||||
|
||||
- 执行技能第一段伤害
|
||||
- 使用 `1.0` 倍攻击力
|
||||
|
||||
### 第二段命中
|
||||
|
||||
```text
|
||||
OnSkillHit2
|
||||
```
|
||||
|
||||
函数定义:
|
||||
|
||||
```csharp
|
||||
public void OnSkillHit2()
|
||||
```
|
||||
|
||||
所属脚本:
|
||||
|
||||
```text
|
||||
Assets/Script/HumanSoldierSkill.cs
|
||||
```
|
||||
|
||||
用途:
|
||||
|
||||
- 执行技能第二段伤害
|
||||
- 使用 `bonusAttackMultiplier` 配置的额外倍率
|
||||
- 防止第二段重复执行
|
||||
|
||||
### 当前技能动画配置
|
||||
|
||||
动画片段:
|
||||
|
||||
```text
|
||||
Assets/Model/第一章/人类士兵新/技能.fbx
|
||||
```
|
||||
|
||||
当前配置顺序:
|
||||
|
||||
| 顺序 | Event 函数名 | 当前 Event 时间(约) |
|
||||
|---:|---|---:|
|
||||
| 1 | `OnSkillHit1` | 0.359 秒 |
|
||||
| 2 | `OnSkillHit2` | 0.573 秒 |
|
||||
|
||||
注意:如果替换了技能动画,必须根据新动作的实际挥击命中帧重新调整两个 Event 的时间。
|
||||
|
||||
---
|
||||
|
||||
## 四、不要直接配置的函数
|
||||
|
||||
以下函数虽然是公开函数或参与技能逻辑,但不应直接作为当前 Animation Event 使用:
|
||||
|
||||
| 函数名 | 原因 |
|
||||
|---|---|
|
||||
| `ApplySkillHit` | 需要 `float` 和 `bool` 两个参数,不能按当前技能 Event 方式直接配置 |
|
||||
| `RegisterAttackHit` | 只负责增加攻击能量,不负责判断具体命中目标 |
|
||||
| `FireSkillProjectile` | 需要传入目标对象,由技能脚本控制调用 |
|
||||
| `PlaySkillAnimation` | 负责启动技能状态,不是动画命中回调 |
|
||||
| `OnRoarFinished` | `BlueMonsterSkill` 中为私有函数,不能作为公开 Animation Event 使用 |
|
||||
| `OnSkillFinished` | `HumanSoldierSkill` 中为私有函数,技能结束由代码回调处理 |
|
||||
|
||||
---
|
||||
|
||||
## 五、配置步骤
|
||||
|
||||
1. 在 Project 窗口选择对应的 `.fbx` 动画文件。
|
||||
2. 在 Inspector 的 **Animation** 页签中选择目标动画 Clip。
|
||||
3. 在时间轴上移动到实际命中帧。
|
||||
4. 点击 **Add Event**。
|
||||
5. 在 Event 的 Function 中选择或填写准确的函数名:
|
||||
- 普通攻击:`OnAttackEffect`
|
||||
- 人类士兵技能第一段:`OnSkillHit1`
|
||||
- 人类士兵技能第二段:`OnSkillHit2`
|
||||
6. 确认 Event 不需要填写参数。
|
||||
7. 点击 **Apply** 保存 FBX 动画导入设置。
|
||||
|
||||
---
|
||||
|
||||
## 六、Event 不生效时检查
|
||||
|
||||
Animation Event 会发送给播放该动画的 Animator 所在 GameObject,因此需要确认:
|
||||
|
||||
- Animator 和接收函数所在脚本在同一个角色根节点上
|
||||
- 普通攻击角色根节点上有 `UnitBase`
|
||||
- 人类士兵技能角色根节点上同时有 `UnitBase` 和 `HumanSoldierSkill`
|
||||
- Function 名称大小写完全一致
|
||||
- 普通攻击 Event 只添加一次,避免一次攻击重复结算伤害
|
||||
- 不要把普通攻击 Event 添加到待机或移动动画
|
||||
- 技能两个 Event 的先后顺序不能颠倒
|
||||
- 替换动画后重新检查 Event 是否仍然存在
|
||||
|
||||
## 七、函数归属速查表
|
||||
|
||||
| Event 函数 | 所属组件 | 适用动画 |
|
||||
|---|---|---|
|
||||
| `OnAttackEffect` | `UnitBase` | 所有普通攻击动画,包括狼人攻击 |
|
||||
| `OnSkillHit1` | `HumanSoldierSkill` | 人类士兵技能第一段 |
|
||||
| `OnSkillHit2` | `HumanSoldierSkill` | 人类士兵技能第二段 |
|
||||
Reference in new issue
Block a user