优化移动平台与乘客的速度继承逻辑,改用双缓冲方案以提升平滑度和兼容性
This commit is contained in:
@@ -8,21 +8,26 @@ namespace BaseGames.Core
|
||||
/// 无需修改 Transform 父子关系,避免与动画/摄像机/HitBox 系统冲突。
|
||||
///
|
||||
/// 协议(执行顺序保障):
|
||||
/// 1. MovingPlatform.FixedUpdate(-300)计算本帧期望位移 delta → 调用 SetPlatformDelta。
|
||||
/// 2. 实现方 FixedUpdate(-200)最前端消费 delta:_rb.position += delta。
|
||||
/// 3. 乘客离开传感器时 MovingPlatform 调用 OnLeavePlatform,继承平台速度防止卡顿。
|
||||
/// 1. MovingPlatform.FixedUpdate(-300)计算本帧期望位移 delta → 调用 SetPlatformDelta,
|
||||
/// 实现方将其转换为速度(delta / fixedDeltaTime)存入下帧缓冲区。
|
||||
/// 2. 实现方 FixedUpdate(-200)将缓冲区速度换入当前帧变量。
|
||||
/// 3. 状态机 FixedUpdate(-100)通过 Move() 将平台速度叠加到水平速度,
|
||||
/// 由 velocity 驱动运动,与 RigidbodyInterpolation2D.Interpolate 完全兼容。
|
||||
/// 4. 乘客离开传感器时 MovingPlatform 调用 OnLeavePlatform,继承垂直速度分量;
|
||||
/// 水平分量已通过最后一次 Move() 自然携带,无需重复叠加。
|
||||
/// </summary>
|
||||
public interface IPassengerReceiver
|
||||
{
|
||||
/// <summary>
|
||||
/// 由 MovingPlatform 每帧推送本帧平台期望位移量(不依赖 MovePosition 是否已执行)。
|
||||
/// 实现方存入待处理字段,在自己的 FixedUpdate 最前端消费,避免与 velocity 冲突。
|
||||
/// 由 MovingPlatform 每帧推送本帧平台期望位移量。
|
||||
/// 实现方将其转换为速度并存入缓冲区,在自己的 FixedUpdate 换入后
|
||||
/// 经 Move() 叠加到水平速度,保持插值平滑。
|
||||
/// </summary>
|
||||
void SetPlatformDelta(Vector2 delta);
|
||||
|
||||
/// <summary>
|
||||
/// 乘客离开平台时调用,传入平台当前帧速度,由实现方叠加到自身速度。
|
||||
/// 防止离台瞬间速度突变产生卡顿。
|
||||
/// 乘客离开平台时调用,传入平台当前帧速度。
|
||||
/// 实现方仅需继承垂直分量;水平分量已由最后一次 Move() 自然携带。
|
||||
/// </summary>
|
||||
void OnLeavePlatform(Vector2 platformVelocity);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user