好多新内容

This commit is contained in:
FloatGaming
2026-07-22 05:35:53 +08:00
parent b5d1cdcbc5
commit 15649d02f8
128 changed files with 5956 additions and 673 deletions
@@ -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)