Table of Contents

物理更新

初级 程序员

当你需要你的逻辑与模拟交互、查询或以其他方式修改模拟的状态时,你可能需要在物理更新(Physics Update)之前或之后立即进行。你可以在 EntityComponent 或脚本中实现 ISimulationUpdate 接口,以便在模拟更新时收到通知。

using System;
using Stride.BepuPhysics;
using Stride.BepuPhysics.Components;
using Stride.Engine;

public class MyPhysicsComponent : SyncScript, ISimulationUpdate
{
    public override void Update()
    {
        // 在这里调用你每帧都需要执行的逻辑
    }

    public void SimulationUpdate(BepuSimulation simulation, float simTimeStep)
    {
        // 在这里放置物理运行之前需要立即执行的逻辑,
        // 例如采样玩家输入、设置刚体速度等
    }

    public void AfterSimulationUpdate(BepuSimulation simulation, float simTimeStep)
    {
        // 在这里放置物理运行之后需要立即检查的逻辑,
        // 例如检查对象是否与其他东西碰撞、是否在地面上、
        // 跳跃时是否未能增加高度等
    }
}

另请参阅