fix(camera-kit): 修复相机震动叠加导致无法回归原点

This commit is contained in:
2026-04-19 14:58:54 +08:00
parent d324ec3aa1
commit 83acdeaecc
2 changed files with 18 additions and 3 deletions
+17 -2
View File
@@ -29,6 +29,7 @@ namespace AibisDream.Framework
private CameraEnum _curCameraEnum;
private CamState _curInitState;
private Camera _orthoMainCamera;
private Tween _shakeTween;
private struct CamState
{
@@ -288,9 +289,23 @@ namespace AibisDream.Framework
yield break;
}
yield return curCamera.VirtualCameraGameObject.transform
var transform = curCamera.VirtualCameraGameObject.transform;
// 停止并清理之前的震动,防止多个 tween 叠加导致无法回归原点
if (_shakeTween != null && _shakeTween.IsActive())
{
_shakeTween.Kill();
if (_camInitStateDict.TryGetValue(_curCameraEnum, out var camState))
{
transform.localPosition = camState.pos;
}
}
_shakeTween = transform
.DOShakePosition(duration, strength, vibrate, 90, false, false)
.WaitForCompletion();
.OnComplete(() => _shakeTween = null);
yield return _shakeTween.WaitForCompletion();
}
/// <summary>
@@ -95,7 +95,7 @@ namespace AibisDream
public IEnumerator Enter()
{
yield return CameraKit.Instance.SwitchCamera(CameraEnum.Subway);
yield return CameraKit.Instance.SwitchCamera(CameraEnum.Subway, true);
DialogUIManager.Instance.LoadBubbles(SubwayCenter.Instance.subwaySlots.CollectData());
}
}