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)