做不出来

This commit is contained in:
SoulliesOfficial
2026-06-30 01:48:58 -04:00
parent 9a9e48f8a5
commit ddd387ef35
132 changed files with 8945 additions and 2943 deletions

View File

@@ -8,6 +8,7 @@ using UnityEngine.UI;
using SLSUtilities.General;
using Unity.Cinemachine;
using Ease = DG.Tweening.Ease;
using Cielonos.MainGame.Effects.Feedback;
namespace Cielonos.MainGame.Characters
{
@@ -44,6 +45,7 @@ namespace Cielonos.MainGame.Characters
// 用于存储独立的摄像机平滑旋转状态,防止跟随 Transform 的跳变
private float currentYaw;
private float currentPitch;
private bool wasShakingLastFrame;
private Tweener iconTween;
@@ -117,9 +119,29 @@ namespace Cielonos.MainGame.Characters
// 【2】接管并强制控制 OrbitalFollow 的轨道位置
var orbitalFollow = viewSc.lockingTargetCamera.GetComponent<CinemachineOrbitalFollow>();
// 直接强制摄像机在水平和垂直轨道上移动
orbitalFollow.HorizontalAxis.Value = currentYaw;
orbitalFollow.VerticalAxis.Value = currentPitch;
float horizontalOffset = 0f;
float verticalOffset = 0f;
var orbitShaker = viewSc.lockingTargetCamera.GetComponent<CameraOrbitShaker>();
bool isOrbitActive = orbitShaker != null && orbitShaker.enabled && orbitShaker.HasActiveShakes;
if (isOrbitActive)
{
horizontalOffset = orbitShaker.CurrentHorizontalOffset;
verticalOffset = orbitShaker.CurrentVerticalOffset;
wasShakingLastFrame = true;
}
else if (wasShakingLastFrame)
{
// 刚结束大招回旋的帧:将相机的最终物理轴值写入内部状态,防止数值突变
currentYaw = orbitalFollow.HorizontalAxis.Value;
currentPitch = orbitalFollow.VerticalAxis.Value;
wasShakingLastFrame = false;
}
// 直接强制摄像机在水平和垂直轨道上移动(包含大招/反馈的 Orbit 回旋偏差量)
orbitalFollow.HorizontalAxis.Value = currentYaw + horizontalOffset;
orbitalFollow.VerticalAxis.Value = currentPitch + verticalOffset;
float OF_Fade = camLockData.orbitalFollowFadeCurve.Evaluate(Mathf.Clamp01((horizontalDistance - camLockData.orbitalFollowFadeDistanceRange.x) /
(camLockData.orbitalFollowFadeDistanceRange.y - camLockData.orbitalFollowFadeDistanceRange.x)));
@@ -226,6 +248,7 @@ namespace Cielonos.MainGame.Characters
this.isLocking = false;
this.isAutoRotate = false;
viewSc.stateDrivenCamera.GetComponent<Animator>().SetBool("isLockTarget", false);
viewSc.currentCamera = viewSc.freeLookCamera; // 核心修复:更新当前相机引用为自由相机
Transform oldTargetPoint = targetPoint;
this.lockTarget = null;