- UI SFX v3: procedurally synthesized one-shots (Tools/synth_ui_sfx.py) wired to buttons, rewards, errors and red dots via UiSfx, gated by the SFX setting. - Five formal enemies (Hornlet, Dashlet, Shellhorn, HornCaptain, GreatHorn): Hunyuan 50k -> 2000-tri XPbr, DGXA TokenRig, Idle/Walk/Attack, nested per type in PrototypeArena; PrototypeBattle.Enemy gains presentation-only Moving/Strikes. - Formal partners for all ten pets in the arena and portraits, including new VineSprite, ThunderLeopard and TideWhale. - Pipeline fixes: reject local TokenRig fallback, drop loose mesh islands, configurable Unity run_script timeout, companion static stage. - Also includes concurrent work from another tool in this working tree (FlameLion, enemy combat FX, challenge mode, home explorer, server updates). - Resources registered in Doc/ResDesc_*.md; verified on isolated :18081. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
6.8 KiB
6.8 KiB
敌人攻击与受击特效/音效标准制作方案
2026-10-21。已接入当前 PrototypeArena;本批制作五类敌人的攻击表现,以及普通受击、硬甲受击、护盾格挡。五类敌人共用稳定的播放接口,资产和参数持久化在 Prefab 中。
资源与映射
| 类型 | 画面表现 | TangoFlux 音效 |
|---|---|---|
| 0 · 小角怪(Hornlet) | 金色短弧/接触闪光 | Enemy_HornletAttack.wav · 0.48s |
| 1 · 疾跑怪(Dashlet) | 青白色狭长斜掠 | Enemy_DashletAttack.wav · 0.42s |
| 2 · 硬壳怪(Shellhorn) | 石甲冲击环/碎屑 | Enemy_ShellhornAttack.wav · 0.60s |
| 3 · 角怪队长(HornCaptain) | 橙红交叉双弧 | Enemy_HornCaptainAttack.wav · 0.58s |
| 4 · 大角首领(GreatHorn) | 大范围红金重击/贴地冲击环 | Enemy_GreatHornAttack.wav · 0.82s |
| 普通受击(敌人类型0/1,以及敌人击中伙伴) | 暖白闪光、短促碎光和小冲击环 | Enemy_HitSoft.wav · 0.34s |
| 硬甲受击(敌人类型2/3/4) | 金橙碎光、石甲冲击环 | Enemy_HitArmor.wav · 0.42s |
| 伙伴护盾完全吸收敌人攻击 | 青色闪光/格挡环 | Enemy_HitShield.wav · 0.55s |
特效根目录:AIClient/Assets/Bundles/Effects/EnemyCombat/。八个 Vfx_Enemy_{名称}.prefab 分别配套五种 Attack 与 HitSoft/HitArmor/HitShield。CombatSoft.png 为 Pipeline 制作的径向透明软粒子贴图;CombatArc.asset/CombatRing.asset 为弧带/环带网格;CombatGlow.mat 使用 AIGame/EnemyCombatParticle 加法透明着色器。
音效目录:AIClient/Assets/Bundles/Sound/SFX/EnemyCombat/。EnemyCombatPresentation.prefab 包含八类特效各四实例(共32),八条PCM音频及八个非循环AudioSource;已作为嵌套Prefab放入现有战场。通过战场资源依赖加载,无需另行动态查找特效地址。BuildPrototype.MakeArena 重建时会恢复该嵌套Prefab。
制作与运行标准
- 先用固定英文声学描述、seed及请求内容哈希建立音效配方。
Tools/generate_enemy_sfx.py按D:/UD/AI/XModel/TangoFlux_AI调用指南.md检查服务ready;调用本机8012,最多两个并发任务;duration=2s、steps=50、guidance=4.5,异步提交和0.8秒轮询。队列满最多等待120秒,不停其它服务。缓存同时检查请求哈希与原稿哈希。 - 保存服务job、提示词、原稿、参数与SHA256至
Tools/output/enemy_combat_sfx/,制作记录在Doc/Design/Sound/EnemyCombat/generation.json。原稿保持44.1kHz立体声;后期做65Hz高通、最强起音截取、5ms淡入、50ms淡出和峰值约-1.94dBFS,输出0.34~0.82秒PCM16立体声短音效。连续试听为同目录preview.wav,按上表五种攻击、普通受击、硬甲受击、格挡排列,每段间隔0.3秒。 - Unity序列化资源、外部资源导入与导入设置全部经Pipeline。
BuildEnemyCombatFx.Build可重建材质、贴图、网格、八套特效及播放池,然后仅替换战场的反馈节点,保留其他战场内容。AudioClip采用PCM/DecompressOnLoad/预加载。 PrototypeBattle在真实扣血和敌人出手处追加不可变CombatCue;PrototypeFlow在每次固定步长后消费队列。既有Pulse仍只用于缩放/状态提示,减速不冒充受击。死亡命中先记录再缩小角色;漏怪和无目标不创建命中。敌人出手弧光位于自身前方,目标命中反馈朝固定战斗相机方向偏移,避免被网格遮挡。EnemyCombatPresentation仅消费表现事实。五种敌人攻击各播放自身攻击效果和声音,并为伙伴播放普通受击或护盾格挡;敌人受击按类型选择软体或石甲。每类型4实例循环复用,声音8路轮转、同音75ms抑制、单音音量上限0.40,所有当前活动音源增益之和不超过0.70,防止多敌同时出手叠加失控。对象数与音源数固定。- 暂停冻结粒子和音源,恢复不重复发射;2倍速改变粒子速度,声音保留原音高。SFX开关关闭立即停战斗音,开启不会补播旧事件。离开战场时禁用反馈节点并停止/清空粒子与声音;新战斗清空旧表现。
- 仍沿用当前 battleRules=1/2 的即时伤害时间。没有把扣血迁移到动画的 OnEnemyAttackImpact,也没有启用 SkillSystem 的 battleRules=3 前摇/投射物协议;正式技能时序迁移仍按 SkillSystem.md 进行。当前动画的蓄力和视觉冲击相位可能晚于即时命中,本次不改变战斗数值、节奏、服务端结算和奖励。
验证与复用
python Tools/verify_enemy_sfx.py:八条音效的请求/原稿/输出哈希、成功任务、采样格式、短时长、前100ms起音、尾部淡出、零削波及有效电平通过。audio_validation.json只声明自动检测,音色的主观听感需通过preview.wav试听,不将自动检查当成人工听审结论。- Pipeline
BuildEnemyCombatFx.Verify:八类映射、32实例、8音源、音频规格、非循环/无自动播放、着色器无编译错误、战场嵌套通过。 - Pipeline
VerifyEnemyCombatFx.Simulation:两种规则×五类敌人,出手事件数与Strikes完全一致;有受击事件;完全护盾吸收;九个致命命中各一次;消费表现队列不影响战斗结果。报告simulation.json。 - Pipeline
VerifyEnemyCombatFx.Play:真实粒子和音源播放、五类攻击/受击/格挡、暂停恢复、2倍速、SFX静音、100次连续触发后的有界池、0.70总增益预算及退出清理通过。报告play.json。 - Pipeline
VerifyEnemyCombatFx.PlayBattle:用真实PrototypeFlow.Update/RefreshBattle驱动隔离内存战斗,五类敌人全部出手、九个敌人击败,事件消费与反馈通过;不登录测试账号、不请求奖励、不改玩家存档。报告battle.json。 VerifyEnemyCombatFx.BuildReview生成独立Assets/Bundles/Scenes/Review/EnemyCombatFx_Review.unity,Capture在Additive场景采样后截图并关闭。截图Assets/Screenshots/enemy_combat_fx_review.png和enemy_combat_fx_battle.png。没有覆盖角色总验收场景,原Boot和烈焰狮场景保持未修改。
Unity调用必须显式指定项目,例如:
unity --json command --project-path D:/UD/AI/AIGame/AIClient set_autotick --enable true
unity --json command --project-path D:/UD/AI/AIGame/AIClient run_script --file AgentScripts/BuildEnemyCombatFx.cs --entry BuildEnemyCombatFx.Build
unity --json command --project-path D:/UD/AI/AIGame/AIClient run_script --file AgentScripts/VerifyEnemyCombatFx.cs --entry VerifyEnemyCombatFx.Simulation
本次验证为开发机Editor/Play,未做微信目标设备性能验收或Player资源包构建。TangoFlux指南注明模型权重为非商业研究用途;生成记录保留该来源信息,未认定音频已获得商用许可。