好多新内容
This commit is contained in:
@@ -36,6 +36,14 @@ public class effectEventController : MonoBehaviour
|
||||
private float cameraDriftSeedX;
|
||||
private float cameraDriftSeedY;
|
||||
|
||||
// 分辨率相机微调:改的是"漂移 pivot"(顶层节点,承载 -40°/-8 基准),不碰相机自身,
|
||||
// 因此不与 SmoothShake(写相机 local)、技能偏移(写技能 pivot)、冲刺(写相机 z)冲突。
|
||||
// 改 pivot 的 X 旋转无任何系统覆盖;改 pivot 的 Z 必须同步 cameraDriftBaseLocalPosition.z,
|
||||
// 否则 UpdateCameraDrift/ResetCameraDriftIfNeeded 会用旧基准把 z 拉回。
|
||||
private bool _cameraBaseCaptured;
|
||||
private float _designPivotRotX; // pivot 初始 X 旋转(如 -40)
|
||||
private float _designPivotZ; // pivot 初始 Z(如 -8)
|
||||
|
||||
private void Awake()
|
||||
{
|
||||
if (Instance == null)
|
||||
@@ -60,9 +68,23 @@ public class effectEventController : MonoBehaviour
|
||||
CacheTrackCrashController();
|
||||
}
|
||||
|
||||
// 门控:漂移关闭且已归位后,跳过每帧的 Perlin/缓存查找;开关切换时才归位一次。
|
||||
private bool _driftResetDone;
|
||||
|
||||
private void Update()
|
||||
{
|
||||
UpdateCameraDrift();
|
||||
if (enableCameraDrift)
|
||||
{
|
||||
_driftResetDone = false;
|
||||
UpdateCameraDrift();
|
||||
}
|
||||
else if (!_driftResetDone)
|
||||
{
|
||||
// 关闭瞬间归位一次,之后不再每帧空跑。
|
||||
UpdateCameraDrift();
|
||||
_driftResetDone = true;
|
||||
}
|
||||
|
||||
UpdatePlayerSkillCameraOffset();
|
||||
}
|
||||
|
||||
@@ -85,6 +107,43 @@ public class effectEventController : MonoBehaviour
|
||||
}
|
||||
}
|
||||
|
||||
// 捕获漂移 pivot 的设计基准(X旋转/Z)一次。pivot 建好后调用即安全。
|
||||
private void CaptureCameraBaseIfNeeded()
|
||||
{
|
||||
if (_cameraBaseCaptured) return;
|
||||
if (cachedCameraDriftPivot == null)
|
||||
{
|
||||
CacheShakeTarget(); // 确保 pivot 已建立
|
||||
if (cachedCameraDriftPivot == null) return;
|
||||
}
|
||||
_designPivotRotX = cachedCameraDriftPivot.localEulerAngles.x;
|
||||
_designPivotZ = cachedCameraDriftPivot.localPosition.z;
|
||||
_cameraBaseCaptured = true;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 按分辨率微调相机:在设计基准上叠加 X 旋转增量与 Z 位置增量。
|
||||
/// 改的是漂移 pivot(不动相机本身),且同步 cameraDriftBaseLocalPosition.z,
|
||||
/// 与漂移/抖动/技能偏移/冲刺全部不冲突。可重复调用(总是相对设计基准,不累积)。
|
||||
/// </summary>
|
||||
public void SetResolutionCameraAdjust(float extraRotX, float extraZ)
|
||||
{
|
||||
CaptureCameraBaseIfNeeded();
|
||||
if (cachedCameraDriftPivot == null) return;
|
||||
|
||||
// X 旋转:设计值 + 增量。pivot 的 rotation 无系统写入,直接设安全。
|
||||
Vector3 euler = cachedCameraDriftPivot.localEulerAngles;
|
||||
euler.x = _designPivotRotX + extraRotX;
|
||||
cachedCameraDriftPivot.localEulerAngles = euler;
|
||||
|
||||
// Z:设计值 + 增量,并同步漂移基准 z(漂移只改 x,y,z 恒取基准)。
|
||||
float targetZ = _designPivotZ + extraZ;
|
||||
Vector3 lp = cachedCameraDriftPivot.localPosition;
|
||||
lp.z = targetZ;
|
||||
cachedCameraDriftPivot.localPosition = lp;
|
||||
cameraDriftBaseLocalPosition.z = targetZ; // 关键:否则会被 UpdateCameraDrift/Reset 拉回
|
||||
}
|
||||
|
||||
private void PrewarmShakeComponent()
|
||||
{
|
||||
if (cachedShakeTarget == null)
|
||||
|
||||
Reference in New Issue
Block a user