feat(skill): add ultimate skill camera and shake effects

add camera focus and screen shake effects for ultimate skills that start with "max" prefix,
add CameraFX utility class for targeted camera zoom and reset functionality
This commit is contained in:
panFD
2026-09-13 15:55:33 +08:00
parent ed9232cf0b
commit 5f511ddcb4
3 changed files with 114 additions and 0 deletions

View File

@@ -17,6 +17,8 @@ import { MissionEconomy } from "../map/MissionEconomy";
import { mLogger } from "../common/Logger";
import { buffManager } from "./BuffManager";
import { BuffList } from "../common/config/BuffSet";
import { CameraFX } from "../common/CameraFX";
import { ScreenShake } from "../common/ScreenShake";
/**
* ==================== 自动施法系统 ====================
@@ -409,6 +411,18 @@ export class SCastSystem extends ecs.ComblockSystem implements ecs.ISystemUpdate
//播放角色攻击动画
heroView.playSkillAnm(config.act);
// 大招(主动技)专属镜头表现:判定依据为施法动画为 max 开头(普攻为 "atk")
// 镜头聚焦拉近 + 技能名横幅 + 命中瞬间震屏,三段式叠加增强打击感
const isMaxSkill = config.act.startsWith("max");
if (isMaxSkill) {
// 1. 镜头聚焦:画面瞬间向施法者拉近再回弹
CameraFX.focusOn(heroView.node, 1.2, 0.5);
// 2. 技能名横幅:与触发技路径表现统一(castSkill 此前未调用)
let bannerVal = "";
if (castTimes > 1) bannerVal = "*" + castTimes.toString();
heroView.skill_name(bannerVal, s_uuid);
}
// 因为 castSkill 只由 update 循环调用,处理的必然是 heroAttrs.skills 中的普通技能
// 特殊触发技能(call/dead/atking等)走的是 forceCastTriggerSkill,不会调用 castSkill
// 召唤类技能(summon_count>1)不再计入普攻链,避免触发 atking 附加技能
@@ -445,6 +459,12 @@ export class SCastSystem extends ecs.ComblockSystem implements ecs.ISystemUpdate
}, i * FightSet.SUMMON_INTERVAL);
}
}, delay);
// 3. 命中瞬间震屏:与技能实体生成时机对齐(前摇结束时)
if (isMaxSkill) {
ScreenShake.shake(8, 0.3);
}
heroAttrs.triggerSkillCD(s_uuid);
}