fix(huoshan): 优化攻击段愤怒红屏反馈

This commit is contained in:
2026-07-26 14:16:53 +08:00
parent 0aae59262a
commit 52fe5c9485
2 changed files with 37 additions and 1 deletions
+1 -1
View File
@@ -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: []
@@ -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)