From cca5404f0ca75ae41533e9b8da54b3c5989e13a3 Mon Sep 17 00:00:00 2001 From: bottlefish <781230111@qq.com> Date: Mon, 20 Jul 2026 03:47:05 +0800 Subject: [PATCH] =?UTF-8?q?feat(scene-mgmt):=20=E6=94=AF=E6=8C=81=E6=97=A0?= =?UTF-8?q?=E7=BA=BF=E8=BD=B1=E8=BE=98=E5=88=86=E5=B1=82=E4=B8=8E=E5=8A=A0?= =?UTF-8?q?=E9=80=9F=E6=99=83=E5=8A=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Cursor --- .../Scripts/SceneManagement/SpriteShowcase.cs | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/Assets/Scripts/SceneManagement/SpriteShowcase.cs b/Assets/Scripts/SceneManagement/SpriteShowcase.cs index c1d2a4722..02dcc7438 100644 --- a/Assets/Scripts/SceneManagement/SpriteShowcase.cs +++ b/Assets/Scripts/SceneManagement/SpriteShowcase.cs @@ -16,6 +16,7 @@ namespace AibisDream private const string DreamSpritePath = "Sprite/梦境/{0}.png"; private const string KiteBaseSuffix = "_底图"; private const string KiteMotionSuffix = "_风筝层"; + private const float ReelMotionSpeedMultiplier = 2f; [SerializeField] private SpriteRenderer _spriteRenderer; [SerializeField] private SpriteRenderer _backgroundSpriteRenderer; @@ -393,6 +394,12 @@ namespace AibisDream : motionProfile.Trim().ToLowerInvariant(); } + private static bool IsReelPic(string picName) + { + var normalized = NormalizeDreamPicName(picName); + return normalized == "D2S轱辘" || normalized == "D2S轱辘没线"; + } + private Vector3 BaseOffset(float x, float y) { return _smallBaseLocalPosition + _smallMotionBaseOffset + new Vector3(x, y, 0f); @@ -402,8 +409,9 @@ namespace AibisDream { var normalized = NormalizeDreamPicName(picName); - // 风筝图已改由风筝 Rig(ShowKite 等)连续驱动,分层底图+遮罩通路仅保留给轱辘特写 - if (normalized == "D2S轱辘") + // 风筝图已改由风筝 Rig(ShowKite 等)连续驱动,分层底图+遮罩通路仅保留给轱辘特写。 + // 普通阶段用有线轱辘,结尾受力晃动改用无线轱辘;两张图各自使用对应的拆分层。 + if (IsReelPic(normalized)) { basePicName = $"{normalized}{KiteBaseSuffix}"; motionPicName = $"{normalized}{KiteMotionSuffix}"; @@ -444,6 +452,7 @@ namespace AibisDream return; } + seq.timeScale = ReelMotionSpeedMultiplier; _smallMotionSequence = seq; } @@ -568,6 +577,7 @@ namespace AibisDream } seq.OnComplete(() => PlayReelHold(tr, Mathf.Min(1f, strain + 0.22f))); + seq.timeScale = ReelMotionSpeedMultiplier; _smallMotionSequence = seq; } @@ -715,7 +725,7 @@ namespace AibisDream var useSplitMotion = TryGetSplitMotionPicNames(picName, out var basePicName, out var motionPicName); var isSamePic = string.Equals(_currentSmallPicName, normalizedName, StringComparison.OrdinalIgnoreCase) && _currentSmallUsesSplitLayers == useSplitMotion; - _smallMotionBaseOffset = normalizedName == "D2S轱辘" ? new Vector3(0f, -0.32f, 0f) : Vector3.zero; + _smallMotionBaseOffset = IsReelPic(normalizedName) ? new Vector3(0f, -0.32f, 0f) : Vector3.zero; KillSmallTweenState(); @@ -1072,7 +1082,7 @@ namespace AibisDream if (_spriteRenderer == null) yield break; var normalizedName = NormalizeDreamPicName(picName); - _smallMotionBaseOffset = normalizedName == "D2S轱辘" ? new Vector3(0f, -0.32f, 0f) : Vector3.zero; + _smallMotionBaseOffset = IsReelPic(normalizedName) ? new Vector3(0f, -0.32f, 0f) : Vector3.zero; _spriteRenderer.gameObject.SetActive(true); if (usesSplitLayers)