fix(skill): 修复技能碰撞检测逻辑和组件初始化问题

- 在Skill.ts中确保节点激活并添加SkillView组件缺失的错误处理
- 修复SkillView中碰撞体启用/禁用逻辑,避免同一帧内重复触发伤害
- 增加pendingDisableCollider标志防止异步操作中的竞争条件
- 完善组件重置逻辑,正确清理事件监听和定时器
- 修复动画事件监听可能重复绑定的问题
This commit is contained in:
walkpan
2026-03-15 15:56:22 +08:00
parent 211f48b6aa
commit 02565c372e
2 changed files with 29 additions and 11 deletions

View File

@@ -99,11 +99,17 @@ export class Skill extends ecs.Entity {
}
node.parent = skillParent;
node.active = true;
// 设置节点属性
let face=caster.node.scale.x < 0 ? -1 : 1
node.setScale(v3(node.scale.x*face,node.scale.y,1))
// 初始视图
const SView = node.getComponent(SkillView);
const SView = node.getComponent(SkillView);
if (!SView) {
mLogger.error(this.debugMode, 'Skill', "[Skill] SkillView 组件缺失:", path);
if (node.isValid) node.destroy();
return;
}
if(config.EType!=EType.collision){
const collider=node.getComponent(BoxCollider2D);
if(collider){
@@ -163,6 +169,7 @@ export class Skill extends ecs.Entity {
sDataCom.s_uuid=s_uuid
sDataCom.fac=cAttrsComp.fac
sDataCom.ext_dmg=ext_dmg
SView.init();
}
/** 模块资源释放 */