feat(scene-mgmt): 支持无线轱辘分层与加速晃动
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user