技能动画图片整理

This commit is contained in:
walkpan
2025-11-01 00:02:01 +08:00
parent b8f48e09d6
commit 600d49c679
88 changed files with 56497 additions and 49513 deletions

View File

@@ -2,13 +2,24 @@
<cite>
**本文档中引用的文件**
- [SkillConComp.ts](file://assets/script/game/hero/SkillConComp.ts)
- [SkillEnt.ts](file://assets/script/game/skill/SkillEnt.ts)
- [SkillSet.ts](file://assets/script/game/common/config/SkillSet.ts)
- [SkillViewCom.ts](file://assets/script/game/skill/SkillViewCom.ts)
- [HeroViewComp.ts](file://assets/script/game/hero/HeroViewComp.ts)
- [HeroSkills.ts](file://assets\script\game\hero\HeroSkills.ts) - *重构技能数据组件*
- [Skill.ts](file://assets\script\game\skill\Skill.ts) - *新增技能实体与组件结构*
- [AtkConCom.ts](file://assets\script\game\skill\AtkConCom.ts) - *优化技能碰撞与方向处理*
- [HeroAtk.ts](file://assets\script\game\hero\HeroAtk.ts) - *重构伤害计算系统*
- [SkillSet.ts](file://assets\script\game/common/config/SkillSet.ts) - *重构技能配置表*
- [SkillView.ts](file://assets\script\game\skill\SkillView.ts) - *更新目标选择与范围伤害逻辑*
</cite>
## 更新摘要
**变更内容**
- 根据最新重构提交更新技能执行机制文档
- 新增技能数据组件SDataCom和移动组件SMoveDataComp说明
- 重构技能伤害计算流程,增加命中检测与伤害类型处理
- 更新技能碰撞检测逻辑,支持范围伤害与目标数量限制
- 优化技能加载与方向处理机制
- 支持前后摇动画配置
- 更新核心组件架构图以反映ECS实体结构变化
## 目录
1. [概述](#概述)
2. [核心组件架构](#核心组件架构)
@@ -22,62 +33,71 @@
## 概述
SkillConComp类是游戏技能控制系统的核心组件负责管理英雄的技能冷却、自动施放条件判断以及技能执行流程。该系统采用ECS架构模式结合定时器机制和节点有效性检查实现了复杂的技能逻辑控制。
SkillConComp类是游戏技能控制系统的核心组件负责管理英雄的技能冷却、自动施放条件判断以及技能执行流程。该系统采用ECS架构模式结合定时器机制和节点有效性检查实现了复杂的技能逻辑控制。近期重构优化了伤害计算与技能释放逻辑,增加了命中检测和伤害类型处理,并支持范围伤害和数量限制。
## 核心组件架构
```mermaid
classDiagram
class SkillConComp {
+HeroView : HeroViewComp
+HeroEntity : any
+TALCOMP : TalComp
+skill_cd : number
-_timers : object
+init() void
+onLoad() void
class Skill {
+addComponents() void
+load() void
+SDataCom : SDataCom
+SMoveCom : SMoveDataComp
+SView : SkillView
}
class SDataCom {
+group : number
+hit_count : number
+Attrs : any
+caster : HeroViewComp
}
class SMoveDataComp {
+startPos : Vec3
+targetPos : Vec3
+s_uuid : number
+scale : number
+rePos() void
}
class SkillView {
+s_uuid : number
+group : number
+SConf : SkillConfig
+sData : SDataCom
+anim : Animation
+start() void
+update(dt : number) void
+castSkill(config : SkillConfig) void
-doSkill(config : SkillConfig, is_wfuny : boolean, dmg : number) void
+check_wfuny() boolean
+selectTargets(t_num : number) Vec3[]
+clear_timer() void
+reset() void
+onDestroy() void
+update() void
+onBeginContact() void
+do_linear() void
+do_bezier() void
+do_fixedStart() void
+apply_damage() void
}
class SkillEnt {
+load(startPos : Vec3, parent : Node, uuid : number, targetPos : any[], caster : HeroViewComp, dmg : number) void
+destroy() void
+init() void
class HeroSkillsComp {
+skills : Record<number, SkillSlot>
+initSkills() void
+addSkill() void
+getSkill() void
+canCast() void
}
class HeroViewComp {
+playSkillEffect(skill_id : number) void
+skills : any[]
+mp : number
+is_atking : boolean
+isStun() boolean
+isFrost() boolean
}
class SkillSet {
+SType : enum
+TGroup : enum
+SkillConfig : interface
}
SkillConComp --> HeroViewComp : "控制"
SkillConComp --> SkillEnt : "创建"
SkillConComp --> SkillSet : "使用配置"
SkillEnt --> SkillViewCom : "包含"
Skill --> SDataCom : "包含"
Skill --> SMoveDataComp : "包含"
Skill --> SkillView : "包含"
SkillView --> SDataCom : "引用"
SkillView --> SMoveDataComp : "引用"
HeroSkillsComp --> SkillSlot : "管理"
```
**图表来源**
- [SkillConComp.ts](file://assets/script/game/hero/SkillConComp.ts#L17-L177)
- [SkillEnt.ts](file://assets/script/game/skill/SkillEnt.ts#L14-L78)
- [HeroViewComp.ts](file://assets/script/game/hero/HeroViewComp.ts#L70-L780)
- [Skill.ts](file://assets\script\game\skill\Skill.ts#L1-L39)
- [SDataCom.ts](file://assets\script\game\skill\SDataCom.ts#L1-L20)
- [SMoveComp.ts](file://assets\script\game\skill\SMoveComp.ts#L1-L25)
- [SkillView.ts](file://assets\script\game\skill\SkillView.ts#L1-L200)
- [HeroSkills.ts](file://assets\script\game\hero\HeroSkills.ts#L1-L91)
**章节来源**
- [SkillConComp.ts](file://assets/script/game/hero/SkillConComp.ts#L1-L177)
- [SkillEnt.ts](file://assets/script/game/skill/SkillEnt.ts#L1-L78)
- [Skill.ts](file://assets\script\game\skill\Skill.ts#L1-L74)
- [HeroSkills.ts](file://assets\script\game\hero\HeroSkills.ts#L1-L91)
## 技能冷却检测机制
@@ -122,7 +142,7 @@ MoreSkills --> |否| End
5. **攻击状态检查**:只有在攻击状态下才允许施放伤害技能
**章节来源**
- [SkillConComp.ts](file://assets/script/game/hero/SkillConComp.ts#L35-L52)
- [HeroSkills.ts](file://assets\script\game\hero\HeroSkills.ts#L50-L55)
## 技能施放流程
@@ -133,7 +153,7 @@ sequenceDiagram
participant Player as "玩家输入/自动触发"
participant SkillCon as "SkillConComp"
participant HeroView as "HeroViewComp"
participant SkillEnt as "SkillEnt"
participant SkillEnt as "Skill"
participant ECS as "ECS系统"
Player->>SkillCon : castSkill(config)
SkillCon->>SkillCon : check_wfuny()
@@ -147,7 +167,7 @@ SkillCon->>SkillCon : selectTargets(config.t_num)
end
SkillCon->>HeroView : playSkillEffect(config.uuid)
HeroView->>HeroView : 播放技能特效
SkillCon->>ECS : ecs.getEntity<SkillEnt>(SkillEnt)
SkillCon->>ECS : ecs.getEntity<Skill>(Skill)
SkillCon->>SkillCon : 创建setTimeout定时器
Note over SkillCon : 延迟执行300ms
SkillCon->>SkillCon : 定时器回调函数
@@ -156,7 +176,7 @@ SkillCon->>SkillEnt : sEnt.load(...)
SkillCon->>SkillEnt : load方法
SkillEnt->>SkillEnt : 加载技能预制体
SkillEnt->>SkillEnt : 设置节点属性
SkillEnt->>SkillEnt : 添加SkillViewCom组件
SkillEnt->>SkillEnt : 添加SkillView组件
alt wfuny机制启用
SkillCon->>SkillCon : scheduleOnce(doSkill, 0.1)
end
@@ -165,8 +185,8 @@ SkillCon->>SkillCon : this._timers[`skill_${config.uuid}`] = timerId
```
**图表来源**
- [SkillConComp.ts](file://assets/script/game/hero/SkillConComp.ts#L54-L85)
- [SkillEnt.ts](file://assets/script/game/skill/SkillEnt.ts#L15-L77)
- [Skill.ts](file://assets\script\game\skill\Skill.ts#L35-L74)
- [SkillView.ts](file://assets\script\game\skill\SkillView.ts#L27-L61)
### 节点有效性检查机制
@@ -178,7 +198,7 @@ SkillCon->>SkillCon : this._timers[`skill_${config.uuid}`] = timerId
这种设计确保了即使在技能施放过程中节点被销毁,也不会导致错误操作。
**章节来源**
- [SkillConComp.ts](file://assets/script/game/hero/SkillConComp.ts#L54-L85)
- [Skill.ts](file://assets\script\game\skill\Skill.ts#L35-L74)
## 多段连发技能机制
@@ -344,7 +364,7 @@ onDestroy() {
### 技能系统设计原则
1. **模块化设计**SkillConComp专注于控制逻辑SkillEnt负责实体管理
1. **模块化设计**SkillConComp专注于控制逻辑Skill负责实体管理
2. **事件驱动**通过ECS系统实现松耦合的组件通信
3. **容错机制**:多重节点有效性检查确保系统稳定性
4. **资源管理**:完善的定时器和事件监听器清理机制

File diff suppressed because one or more lines are too long