UE4角色移动速度即便乘以delta time仍随帧率变化问题
UE4不同运行模式下角色移动速度异常问题
我在Unreal Engine 4视口中运行游戏时,帧率约为100到120fps,角色移动速度符合预期。但当我选择「Standalone game(独立游戏)」模式运行时,帧率升至380到450fps左右,角色移动速度却比预期慢很多。我已经通过delta time对移动做了缩放,原本预期速度不会受帧率影响,不清楚哪里出了问题。
我设置的轴映射如下图所示:
我的角色移动计算公式如下:
World Direction * ((Movement Speed * Axis Input Scale) * Delta Seconds) // 100FPS场景下示例 1 * ((100 * 1) * (1 / 100)) = 1cm per frame * 100 fps = 100cm per second // 400FPS场景下示例 1 * ((100 * 1) * (1 / 400)) = 0.25cm per frame * 400 fps = 100cm per second
实现上述计算逻辑的角色移动蓝图位于我的角色控制器蓝图中,如下图所示:
其中UpdateCharacterMovement事件在Event Tick中被调用:
我添加了打印字符串节点来统计每秒移动距离,结果显示100fps和400fps场景下都输出Travelled 100.x in 1.x seconds,但实际移动速度差异十分明显:400fps下我无法跳过100fps下可以轻松越过的缺口。
解决方案
正如评论区George指出的,我之前没有意识到使用Add Movement Input函数时,角色移动组件会自动处理移动速度、delta time等相关计算。我简化了自定义事件后问题解决,最终蓝图如下:
内容的提问来源于stack exchange,提问作者Daniel
相关产品推荐
相关产品推荐

