释放技能动画 设定在技能参数中+伤害系统建立

This commit is contained in:
2025-02-03 10:45:06 +08:00
parent 89978ddbe8
commit cdb8261be9
17 changed files with 960 additions and 462 deletions

View File

@@ -19,18 +19,21 @@ import { HeroInfo } from "../common/config/heroSet";
import { Talents } from "../common/config/TalentSet";
import { MonModelComp } from "./MonModelComp";
import { BattleMoveComp } from "../common/ecs/position/BattleMoveComp";
import { HeroSkillsComp } from "../skill/heroSkillsComp";
/** 角色实体 */
@ecs.register(`Monster`)
export class Monster extends ecs.Entity {
// 数据层
MonModelComp!: MonModelComp;
// 视图层
HeroView!: HeroViewComp;
HeroModel!: MonModelComp;
HeroView!: HeroViewComp;
BattleMove!: BattleMoveComp;
HeroSkills!: HeroSkillsComp;
protected init() {
this.addComponents<ecs.Comp>(
BattleMoveComp,
HeroSkillsComp,
MonModelComp
);
}
destroy(): void {
@@ -99,25 +102,42 @@ export class Monster extends ecs.Entity {
hv.dexp=hero.dexp;
this.add(hv);
// 初始化多个技能组件
const skillsComp = this.get(HeroSkillsComp);
// 正确初始化已有技能
hero.skills.forEach(skillId => {
this.addSkill(skillId); // 使用addSkill方法确保初始化
});
// 初始化移动参数
const move = this.get(BattleMoveComp);
move.direction = 1; // 向右移动
move.targetX = 800; // 右边界
}
set_ratio(uuid:number){
let ratio=1;
switch (HeroInfo[uuid].level) {
case 2:
ratio=1.05
break;
case 3:
ratio=1.1
break;
case 4:
ratio=1.15
break;
case 5:
ratio=1.2
break;
default:
ratio=1
// 添加技能
public addSkill(skillId: number) {
const comp = this.get(HeroSkillsComp);
if (comp.skills.indexOf(skillId) === -1) {
comp.skills.push(skillId);
comp.cooldowns.set(skillId, 0);
comp.counters.set(skillId, 0);
console.log(`技能${skillId}初始化完成`,
'当前cooldowns:', comp.cooldowns,
'当前counters:', comp.counters);
}
return ratio;
}
// 移除技能
public removeSkill(skillId: number) {
const comp = this.get(HeroSkillsComp);
comp.skills = comp.skills.filter(id => id !== skillId);
}
public levelUp() {
// ...升级逻辑...
const comp = this.get(HeroSkillsComp);
comp.skills.forEach(skillId => {
comp.resetCooldown(skillId);
});
}
}