From 52fe5c9485a74ccbf72e072d2651eef569d7a8f3 Mon Sep 17 00:00:00 2001 From: bottlefish <781230111@qq.com> Date: Sun, 26 Jul 2026 14:16:53 +0800 Subject: [PATCH] =?UTF-8?q?fix(huoshan):=20=E4=BC=98=E5=8C=96=E6=94=BB?= =?UTF-8?q?=E5=87=BB=E6=AE=B5=E6=84=A4=E6=80=92=E7=BA=A2=E5=B1=8F=E5=8F=8D?= =?UTF-8?q?=E9=A6=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Assets/Materials/M_HuoshanScreenGlitch.mat | 2 +- .../LogReleasePresentationController.cs | 36 +++++++++++++++++++ 2 files changed, 37 insertions(+), 1 deletion(-) diff --git a/Assets/Materials/M_HuoshanScreenGlitch.mat b/Assets/Materials/M_HuoshanScreenGlitch.mat index 349b6a393..ac93b1c81 100644 --- a/Assets/Materials/M_HuoshanScreenGlitch.mat +++ b/Assets/Materials/M_HuoshanScreenGlitch.mat @@ -45,5 +45,5 @@ Material: m_Colors: - _Color: {r: 1, g: 1, b: 1, a: 1} - _PhosphorColor: {r: 0.44716978, g: 1, b: 0.74689186, a: 1} - - _RageColor: {r: 0.44716978, g: 1, b: 0.74689186, a: 1} + - _RageColor: {r: 1, g: 0.1882353, b: 0.3019608, a: 1} m_BuildTextureStacks: [] diff --git a/Assets/Scripts/MiniGame/HuoShan/Language/LogReleasePresentationController.cs b/Assets/Scripts/MiniGame/HuoShan/Language/LogReleasePresentationController.cs index 7ad13027b..7543401dc 100644 --- a/Assets/Scripts/MiniGame/HuoShan/Language/LogReleasePresentationController.cs +++ b/Assets/Scripts/MiniGame/HuoShan/Language/LogReleasePresentationController.cs @@ -106,6 +106,11 @@ namespace AibisDream.MiniGame.Language [SerializeField] private Color lieBackdropColor = new Color(0.02f, 0.05f, 0.09f, 0.82f); [Tooltip("梳理完成后目标粒子与真话字的颜色;玩法阶段仍用粒子管理器原色。")] [SerializeField] private Color presentationResolvedColor = Color.white; + [Header("Truth Attack")] + [Tooltip("攻击词命中时覆盖记忆层的瞬时怒火色。使用深红而非粉红,避免与攻击文字争夺可读性。")] + [SerializeField] private Color truthAttackFlashColor = new Color(0.48f, 0.01f, 0.025f, 1f); + [Tooltip("攻击强度从 0 到 1 时,整屏红色冲击的透明度范围。")] + [SerializeField] private Vector2 truthAttackFlashAlpha = new Vector2(0.14f, 0.40f); [SerializeField] private int screenGlowSortingOrder = 8; [SerializeField] private int screenTextSortingOrder = 18; @@ -1436,6 +1441,13 @@ namespace AibisDream.MiniGame.Language PlayMemoryTear( Mathf.Lerp(0.08f, 0.58f, resolvedImpact), Mathf.Lerp(0.14f, 0.36f, resolvedImpact)); + PulseTruthAttackFlash( + Mathf.Lerp( + truthAttackFlashAlpha.x, + truthAttackFlashAlpha.y, + resolvedImpact), + Mathf.Lerp(0.035f, 0.018f, resolvedImpact), + Mathf.Lerp(0.18f, 0.30f, resolvedImpact)); if (particleManager != null) yield return particleManager.PlayTruthAttackAndWait(text, duration, resolvedImpact); @@ -2668,6 +2680,30 @@ namespace AibisDream.MiniGame.Language sequence.OnComplete(StopScreenDim); } + private void PulseTruthAttackFlash(float alpha, float riseDuration, float fallDuration) + { + if (screenDimRenderer == null) + return; + + screenDimRenderer.DOKill(); + screenDimRenderer.enabled = true; + screenDimRenderer.gameObject.SetActive(true); + screenDimRenderer.color = new Color( + truthAttackFlashColor.r, + truthAttackFlashColor.g, + truthAttackFlashColor.b, + 0f); + + Sequence sequence = DOTween.Sequence().SetTarget(this); + sequence.Append(screenDimRenderer.DOFade( + Mathf.Clamp01(alpha), + Mathf.Max(0.01f, riseDuration))); + sequence.Append(screenDimRenderer.DOFade( + 0f, + Mathf.Max(0.01f, fallDuration))); + sequence.OnComplete(StopScreenDim); + } + private void HoldTruthBreakBlackout(float alpha) { if (screenDimRenderer == null)