【发布时间】:2011-10-08 06:45:40
【问题描述】:
我正在使用 XNA 在 C# 中开发一个非常简单的蛇游戏。问题是我希望精灵以增量方式移动,但不是尽可能快。由于精灵是 16x16 像素,它以 16 像素的增量移动。例如,如果当前方向是正确的,则执行此行:
playerPosition.X += 16;
这很好用,但它的移动速度令人难以置信。我将如何让它移动得更慢?就像每 1/2 秒 16 个像素。
【问题讨论】:
我正在使用 XNA 在 C# 中开发一个非常简单的蛇游戏。问题是我希望精灵以增量方式移动,但不是尽可能快。由于精灵是 16x16 像素,它以 16 像素的增量移动。例如,如果当前方向是正确的,则执行此行:
playerPosition.X += 16;
这很好用,但它的移动速度令人难以置信。我将如何让它移动得更慢?就像每 1/2 秒 16 个像素。
【问题讨论】:
自从我上次使用 XNA 以来已经有很长时间了,但是根据我在游戏循环中的记忆,当您执行操作时,您可以访问一个属性,该属性基本上是自上次操作以来经过的时间。您应该使用它并减少 16 像素的移动,使其仅在第二秒的那部分移动。
大多数情况下,您只需除以 60 并将其用作您的新移动速度,并且非常安全。因此,如果您想每秒移动 16 个像素,则每帧像素移动为 16/60。
【讨论】:
您可以保留一个“自上次移动以来的时间”的内部计数器,每帧都添加到它,一旦超过指定的阈值,就进行移动并重置计数器。
Game.Update 传入一个 GameTime 对象,您可以使用该对象来确定自上次调用 Update 以来经过的时间。
【讨论】: