做不出来
This commit is contained in:
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user