13 KiB
火山 Log 释放 Yarn 演出命令
Stage6.yarn 已改为使用原子命令编排。除特别标记为“等待”的命令外,命令只启动效果并立即让 Yarn 继续;并行效果之间的节奏用 <<wait 秒数>> 调整。
旧命令 expression_lie_begin、expression_lie_break、expression_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_jolt、expression_memory_tear、expression_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_squeeze的jitter、expression_lie_show的characterSpacing,以及谎话前后的wait。 - 反转力度优先调
expression_truth_blackout的alpha、expression_lie_split的distanceRatio、expression_truth_flash的alpha和expression_glitch_pulse的peak。 expression_memory_tear与expression_glitch_pulse可以同时触发:前者只作用于记忆图,后者位于记忆图和火山脸之间。expression_truth_resolve是等待命令。其duration决定 Yarn 何时继续到真话对白,并保证最后一个字符在这个总时长内稳定。- 硬切节奏用
start_timeline同帧启动 Timeline,然后连续调用expression_memory_cut与expression_truth_snap;需要等 Timeline 播完时再调用wait_timeline。 - Stage6 三段谎话到真话均使用硬切;Light/Medium/Heavy 的差异只保留在谎话持续期间的跳字、记忆扰动和 Glitch 强度,不再影响真话稳定速度。
expression_memory_brightness_pulse 0.18 0.08 0.18可直接放在某句对白前,用于精确同步亮度冲击。- 所有 Alpha、峰值、外围失真和 Calm 半径都会限制在
0–1;时间会保证至少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 不再使用全屏噪声 glitch:
expression_actor_flash的最后一个参数(Glitch 峰值)传 0。 expression_actor_truth_flash后续参数依次为停留、字号、透明度、抖动幅度。expression_actor_flash后续参数依次为停留、字号、落定缩放、冲击缩放、色散距离、色散透明度、记忆冲击、Glitch 峰值。expression_actor_word_hit最后两个数是字号和冲击缩放。expression_actor_scroll最后一个数是字号。滚动固定为单列,并严格裁切在ExpressionScreenMaskRect内;新字幕按给定词组顺序从上方循环补入。