【发布时间】:2011-10-12 00:19:00
【问题描述】:
我正在使用 C# 在 WPF 中创建一个简单的车辆和弹丸模拟游戏。我需要有一个恒定的帧速率(即我需要知道在每一帧中以一定的速度移动一个物体多少)。这样我就可以订阅一个事件,该事件根据游戏的物理特性计算和更新位置到CompositionTarget.Rendering 事件。
CompositionTarget.Rendering += UpdatePositions;
我用谷歌搜索了一会儿,没有找到答案。 WPF seem to be arbitrary 中的 fps,以及使用秒表来了解一帧与前一帧之间经过了多少时间根本不干净。
我还想过创建自己的帧速率,方法是每隔几毫秒调用一次 UpdatePositions,并希望相应地进行渲染并获得流畅的动画。这似乎是在重新发明轮子,我想不出一种干净简单的方式来实现它。
谢谢!
【问题讨论】:
-
除了最基本的游戏开发外,不要使用 WPF。它真的不适合那种用途。如果您想使用 .NET 创建游戏,您应该研究 XNA 框架。
-
我认为这是最基本的游戏开发,我已经工作了很多,所以我真的需要理清我的帧率问题......
-
“使用秒表知道一帧和前一帧之间经过了多少时间根本不会干净” - 怎么回事?
-
帧率驱动的游戏很糟糕。永远不要以帧速率驱动您的运动。如果客户端无法跟上您设置的帧速率会怎样?
-
除了您是否应该为此使用 WPF,您可以使用 nowTime = DateTime.Now; TimeSpan delta = nowTime - lastDateTime(为您提供经过的时间间隔)。然后lastDateTime = nowTime;