This commit is contained in:
2025-06-20 00:25:05 +08:00
parent ff402f14ca
commit b7edf26cc9
7 changed files with 331 additions and 162 deletions

View File

@@ -31,50 +31,81 @@ export class Skill extends ecs.Entity {
angle:number=0,
dmg:number=0
) {
let FIGHTCON=parent.getComponent(FightConComp);
const config = SkillSet[uuid];
if (!config) return;
if (!config) {
console.error("[Skill] 技能配置不存在:", uuid);
return;
}
// 检查施法者
if (!caster) {
console.error("[Skill] 施法者为空");
return;
}
// 加载预制体
const path = `game/skills/${config.sp_name}`;
const prefab = oops.res.get(path, Prefab);
if (!prefab) {
console.error("[Skill] 预制体加载失败:", path);
return;
}
const node = instantiate(prefab);
// 设置节点属性
node.parent = parent;
node.setPosition(startPos);
node.angle+=angle
// console.log("加载预制体:",startPos,targetPos)
console.log("[Skill]:node=>",startPos)
// 添加技能组件
const skillComp = node.getComponent(SkillCom); // 初始化技能参数
skillComp.ap = caster.ap+dmg;
const SComp = node.getComponent(SkillCom); // 初始化技能参数
if (!SComp) {
console.error("[Skill] 技能组件获取失败");
return;
}
console.log("[Skill]:caster=>",caster,config.name+"scomp=>",SComp,"fightcon=>",FIGHTCON)
// 确保caster有必要的属性
if (typeof caster.ap === 'undefined') {
console.error("[Skill] caster.ap 未定义");
return;
}
if (typeof caster.box_group === 'undefined') {
console.error("[Skill] caster.box_group 未定义");
return;
}
SComp.ap = caster.ap*config.ap/100;
if(caster.fac==0){
if(caster.is_master){
skillComp.ap=Math.floor(skillComp.ap*(100+FIGHTCON.hero_buff.ATK)/100);
SComp.ap=Math.floor(SComp.ap*(100+FIGHTCON.hero_buff.ATK)/100);
}else{
skillComp.ap=Math.floor(skillComp.ap*(100+FIGHTCON.friend_buff.ATK)/100);
SComp.ap=Math.floor(SComp.ap*(100+FIGHTCON.friend_buff.ATK)/100);
}
}else{
skillComp.ap=Math.floor(skillComp.ap*(100-FIGHTCON.enemy_buff.ATK)/100);
SComp.ap=Math.floor(SComp.ap*(100-FIGHTCON.enemy_buff.ATK)/100);
}
skillComp.s_uuid = uuid;
skillComp.animType = config.AnimType;
skillComp.endType = config.endType;
skillComp.speed = config.speed;
skillComp.inTime = config.in;
skillComp.atk_count = 0;
skillComp.startPos = startPos
skillComp.targetPos =targetPos
skillComp.caster = caster;
skillComp.prefabName = config.sp_name;
skillComp.group = caster.box_group;
skillComp.fac= caster.box_group==BoxSet.HERO?0:caster.box_group==BoxSet.MONSTER?1:2;
SComp.ap=(100+dmg)/100*SComp.ap // master 主将 技能额外百分比加成
console.log("[Skill]:caster.box_group=>",caster.box_group,config.name+"scomp.group=>",SComp.group)
// 设置技能组件属性
Object.assign(SComp, {
s_uuid: uuid,
animType: config.AnimType,
speed: config.speed,
atk_count: 0,
startPos: startPos,
targetPos: targetPos,
caster: caster,
prefabName: config.sp_name,
group: caster.box_group,
fac: caster.fac,
animName: config.animName
});
// console.log(config.sp_name+"技能配置",skillComp);
// 初始化动画名称
skillComp.animName = config.animName; // 从配置获取动画名称
this.add(skillComp);
this.add(SComp);
}
}