Files
aibis-dream/Docs/HuoShan/LogReleaseYarnCommands.md
T

13 KiB
Raw Blame History

火山 Log 释放 Yarn 演出命令

Stage6.yarn 已改为使用原子命令编排。除特别标记为“等待”的命令外,命令只启动效果并立即让 Yarn 继续;并行效果之间的节奏用 <<wait 秒数>> 调整。

旧命令 expression_lie_beginexpression_lie_breakexpression_truth_reveal 仍然保留,供其他节点兼容使用。Stage6 不再依赖它们。

火山脸与 LOG1 大字

命令 参数 行为
expression_face_fade_in duration 显式淡入火山脸并等待完成。三条 LOG 都在完成节点中调用,不再由粒子系统自动淡入。
expression_actor_flash "text" holdDuration 清晰的大字重击;连续调用会逐级增强,但每次结束都退回晃动粒子字。
expression_actor_flash_in expression_actor_flash 相同 阻塞播放相同的大字重击入场,但保持最后一帧、不退场;用于段落结尾定格。
expression_actor_flash_loop_start 非阻塞启动“没问题 → 冇问题 → 帽问题”三拍无限循环,参数固定为 LOG1 当前节奏。
expression_actor_flash_loop_stop 立即停止循环、清掉当前大字并恢复晃动粒子字。
expression_actor_slot "characterPool" duration interval fontSize "truthPool" 中央大字持续换字。truthPool 非空时其字符也混入换字池,并在主字上以真话暖色(truthAccentColor)显示——真假字符交替闪烁即"争夺"。命令不等待,节奏由紧随其后的同长度 wait 控制;结束后停在最后一帧。
expression_actor_truth_flash "text" holdDuration fontSize alpha jitter 真话闪现(等待):谎话大字之间,暖色完整真话带细微抖动挣扎浮现一拍。不推进谎话冲击等级、不累积记忆损伤;"被掐断"由紧随其后的 expression_glitch_pulse 表现。
expression_actor_word_hit "text" holdDuration 单字或短词独占屏幕重击,并等待该拍完成。
expression_actor_scroll `"phrase1 phrase2" scrollDuration loopDuration holdDuration`

LOG1 爆发段示例(对话推动:乱码台词 → 聚拢被打断 → 疯狂闪切 → glitch 翻转成真话):

hs: 我感觉<shake a=0.45><color=\#2B2B2B>■■■■■■</color></shake>
<<expression_truth_gather 0.55 1.1>>
<<wait 1.05>>
<<expression_actor_flash "没问题" 0.35 10.5 1.1 1.45 0.008 0.06 0.50 0>>
<<expression_truth_scatter 0.9>>
hs: ……我感觉自己<shake a=0.5><color=\#2B2B2B>■■■■</color></shake>
...
hs: 我感觉自己……像个<shake a=0.6><color=\#2B2B2B>■■</color></shake>
<<expression_truth_gather 0.92 1.6>>
<<wait 1.5>>
<<expression_face_error 0.55 0.9>>
<<expression_actor_flash "帽问题" 0.5 12.0 1.1 2.20 0.010 0.08 1.00 0>>
<<expression_truth_scatter 1.1>>
...
<<expression_truth_lie_flicker "没问题|冇问题|帽问题" "■■■■■■" 3.2 0.26 12>>
<<wait 3.2>>
<<expression_lie_morph_truth "没问题" "我就是个笑话" 0.9>>
<<expression_memory_cut>>
<<expression_truth_snap 0 0.42>>

谎话形成

命令 参数 行为
expression_lie_prepare freezeDuration noiseTarget 在指定时间内停止记忆推近/横移,并将记忆噪声降到目标值。进入谎话状态。
expression_truth_squeeze duration jitter alpha 将原始真话字符挤到屏幕边缘;jitter 控制边缘抖动幅度,alpha 控制字符亮度。
expression_lie_show "keyword" duration characterSpacing 从压扁、拥挤状态机械展开谎话关键词。characterSpacing 是最终 TMP 字距。
expression_lie_shuffle "characterPool" duration interval 只在谎话关键词现有字符槽位里高速替换字符,不增加新字符。命令不等待。
expression_scanline duration stalled 扫描线。stalled=false 时完整扫过,true 时停在屏幕中部并跳闪。

示例:

<<expression_lie_prepare 0.25 0.005>>
<<expression_truth_squeeze 0.22 0.071 0.28>>
<<expression_lie_show "没问题" 0.22 14>>
<<expression_scanline 0.32 false>>
<<wait 0.25>>
<<expression_lie_shuffle "我就是个笑话" 0.55 0.045>>
<<expression_memory_jolt 0.025 0.22 0.045>>
<<expression_glitch_pulse 0.12 0.05 0.20>>

谎话开裂与泄漏

命令 参数 行为
expression_lie_crack_begin lieAlpha 进入开裂状态并压暗谎话。
expression_screen_dim alpha riseDuration fallDuration 冷色屏幕暗脉冲;命令不等待。
expression_memory_jolt offset duration tear 记忆图水平错位后返回,tear 同时设置撕裂强度;命令不等待。
expression_truth_leak "characterPool" duration 兼容旧节点:在谎话字符槽位中进行跳字并等待完成,不再额外点亮真话片段。新节点优先使用 expression_lie_shuffle
expression_system_message "text" "normal/error" fadeDuration 显示屏幕系统提示。样式忽略大小写。
expression_system_message_hide fadeDuration 淡出系统提示;命令不等待。

记忆显影与轻微失真

expression_memory_begin 非阻塞启动记忆画面:SpriteRenderer 在对白继续执行的同时从 0 平滑淡入到 1,并按 pushSpeed 持续推近,基础层不再横移。记忆预设由图片自动选择(office / sunset / private_office 分别对应轻 / 中 / 重),Yarn 不再传预设名。Shader 的 _SimGlitch 保留轻微 UV 波动和偶发窄行滑移。争夺真话/假话时,expression_memory_joltexpression_memory_tearexpression_actor_flash 带来的拉扯、切片、冲击和 Glitch 仍叠加在基础层之上。

命令 参数 行为
expression_memory_sim target duration 把模拟感调到目标值;命令不等待。用于演出中微调,进入记忆时无需调用。
expression_memory_alpha target duration 把当前记忆透明度推进到 target;命令不等待,适合放在对白之间逐段显影。

LOG1 爆发段:玩家推动的真假争夺

爆发段由对话推进驱动:火山每句台词里"想说的部分"是乱码黑块(Text Animator 内联标签,如 <shake a=0.5><color=\#2B2B2B>■■■■</color></shake>),玩家点击推进后目标字聚拢、似乎要说出来,又被谎话大字砸断炸散。三次递进(聚合目标 0.55 → 0.72 → 0.92)后进入乱码块与"没问题"的疯狂闪切,最后停在"没问题",由 glitch 翻转成真话。

命令 参数 行为
expression_truth_gather target duration 真话聚合尝试(不等待):目标字被慢慢拉向最终位置、乱跳收敛,并按字序逐个锁定成真心话字符。target<1 时最后几个字永远差一点锁不住(锁字判定用原始进度,阈值 0.45~0.95 阶梯)。
expression_truth_scatter burst 聚合被打断(不等待):目标字向外爆散(世界单位距离)并恢复乱跳、解除已锁定字符。谎话 flash 期间粒子隐藏,所以要放在 flash 命令之后,让字符"带着爆散重现"。
expression_face_error duration intensity 火山脸错误闪红(不等待):短暂替换为红屏 Sprite,随后恢复,并轻微下沉。intensity 为旧脚本兼容参数。
expression_truth_lie_flicker "lie1|lie2" "censored" duration interval fontSize 快速真假闪切(不等待,节奏由同长度 wait 控制):乱码块(暖色字+暖底色)与谎话(冷白字+冷底色)交替独占屏幕,越到后面切得越快,结束定格在第一条谎话。底色即"电视头背景",在 Inspector 的 truthBackdropColor / lieBackdropColor 调。
expression_lie_morph_truth "lie" "truth" duration 定格的谎话被 glitch 翻转成真话(等待):大字乱跳中长度从谎话渐变到真话、真假底色抢闪,最后落在暖色真话并轻微收缩定住。紧接 expression_memory_cut + expression_truth_snap,说出口的那一刻其余效果全部消失。
expression_truth_blackout duration alpha 顿挫黑一拍(等待):停掉闪切、隐藏大字并保持黑场。当前 LOG1 未使用,保留备用。

停顿时长直接写成 Yarn 的 wait,因此每段不再受预设黑盒限制:

<<wait 0.55>>
<<expression_lie_crack_begin 0.48>>
<<expression_scanline 0.22 true>>
<<expression_screen_dim 0.28 0.06 0.12>>
<<expression_memory_jolt 0.08 0.24 0.11>>
<<expression_truth_leak "离开" 0.24>>

假话到真话的强反转

命令 参数 行为
expression_truth_blackout duration alpha 保持一次短促闪黑。此命令等待指定时长,遮罩由紧接着的暖闪/暗脉冲覆盖,或在演出清理时关闭。
expression_lie_split duration distanceRatio stretchX squashY 谎话产生冷暖双影,向左右分裂并横向拉伸、纵向压扁;命令不等待。
expression_truth_flash alpha riseDuration holdDuration fallDuration 暖色真话闪光;命令不等待。
expression_memory_brightness_pulse amount riseDuration fallDuration 只改变记忆图亮度,可用于反转或对白冲击;命令不等待。
expression_memory_tear peak duration 记忆撕裂从峰值回落;命令不等待。
expression_glitch_pulse peak riseDuration fallDuration 背景透明 Glitch 脉冲;命令不等待。
expression_face_dip duration ratio 火山脸向下抽动后回弹;ratio 是脸 Bounds 高度比例。
expression_truth_release alphaDuration 原始真话字符从屏幕边缘返回、转暖并恢复亮度,建立 CalmField。
expression_truth_resolve duration peripheral calmRadius 在总时长内稳定全部真话字符;控制记忆外围失真和清晰区半径。此命令等待稳定完成。
expression_memory_cut 同一帧隐藏两张记忆图,并清空记忆撕裂、噪声、CalmField 和背景 Glitch。
expression_truth_snap peripheral calmRadius 隐藏谎话层,将所有目标字同一帧放到最终位置、改成真话并锁定。

典型反转:

<<expression_truth_blackout 0.055 0.42>>
<<expression_lie_split 0.35 0.18 1.85 0.42>>
<<expression_truth_flash 0.62 0.045 0.025 0.16>>
<<expression_memory_brightness_pulse 0.16 0.06 0.20>>
<<expression_memory_tear 0.50 0.35>>
<<expression_glitch_pulse 0.50 0.12 0.35>>
<<expression_face_dip 0.35 0.015>>
<<expression_truth_release 0.08>>
<<expression_truth_resolve 0.90 0.30 0.42>>

调节建议

  • 谎话“不自然”的主要旋钮是 expression_truth_squeezejitterexpression_lie_showcharacterSpacing,以及谎话前后的 wait
  • 反转力度优先调 expression_truth_blackoutalphaexpression_lie_splitdistanceRatioexpression_truth_flashalphaexpression_glitch_pulsepeak
  • expression_memory_tearexpression_glitch_pulse 可以同时触发:前者只作用于记忆图,后者位于记忆图和火山脸之间。
  • expression_truth_resolve 是等待命令。其 duration 决定 Yarn 何时继续到真话对白,并保证最后一个字符在这个总时长内稳定。
  • 硬切节奏用 start_timeline 同帧启动 Timeline,然后连续调用 expression_memory_cutexpression_truth_snap;需要等 Timeline 播完时再调用 wait_timeline
  • Stage6 三段谎话到真话均使用硬切;Light/Medium/Heavy 的差异只保留在谎话持续期间的跳字、记忆扰动和 Glitch 强度,不再影响真话稳定速度。
  • expression_memory_brightness_pulse 0.18 0.08 0.18 可直接放在某句对白前,用于精确同步亮度冲击。
  • 所有 Alpha、峰值、外围失真和 Calm 半径都会限制在 01;时间会保证至少 0.01s,避免错误参数卡住 Yarn。

LOG1 可调参数

<<expression_memory_begin "office" 2.2 0.012 0 false 1>>
<<expression_actor_flash "没问题" 0.6 10.5 1.15 1.60 0.025 0.20 0.50 0>>
<<expression_actor_truth_flash "我就是个笑话" 0.35 8.5 0.55 0.02>>
<<expression_actor_word_hit "没" 0.16 18 1.60>>
<<expression_actor_scroll "没问题|冇问题|帽问题" 1.8 0.85 0.45 5.2>>
  • expression_memory_begin 参数依次为记忆图、淡入时长、持续推进速度、旧水平速度、是否保留 Glitch、目标 Alpha。LOG1 使用 2.2 / 0.012 / 0 / false / 1,一次连续淡入,不再按对白阶梯式补透明度。
  • LOG1 不再使用全屏噪声 glitchexpression_actor_flash 的最后一个参数(Glitch 峰值)传 0。
  • expression_actor_truth_flash 后续参数依次为停留、字号、透明度、抖动幅度。
  • expression_actor_flash 后续参数依次为停留、字号、落定缩放、冲击缩放、色散距离、色散透明度、记忆冲击、Glitch 峰值。
  • expression_actor_word_hit 最后两个数是字号和冲击缩放。
  • expression_actor_scroll 最后一个数是字号。滚动固定为单列,并严格裁切在 ExpressionScreenMaskRect 内;新字幕按给定词组顺序从上方循环补入。