用gameTime移动sprite,为什么我需要使用+ =?

use*_*166 3 c# xna

我正在尝试使用变量gameTime.ElapsedGameTime.TotalMilliseconds移动2D测试精灵;

更新sprites位置的代码是这样的:

spritePosition.X += (float)gameTime.ElapsedGameTime.TotalMilliseconds;
Run Code Online (Sandbox Code Playgroud)

使用上面的行,精灵在运行时按预期向右移动.

但是我不明白为什么我需要"+ =".即为什么没有以下工作:

spritePosition.X = (float)gameTime.ElapsedGameTime.TotalMilliseconds;
Run Code Online (Sandbox Code Playgroud)

(我知道x + = 1是x = x + 1的简写)

我将gameTime传递给更新函数,不应该不断变化(因此不断移动精灵)?我觉得我错过了一些直接的东西!

编辑:精灵不加速.(我可以通过使用秒而不是毫秒来测试它,它显然每秒只移动1个像素,而不是加速)

信息:

语言:C#我正在使用XNA Windows游戏模板在更新功能中调用上面的单行

Met*_*ght 5

这是因为gameTime.ElapsedGameTime自上次"框架"以来经过的时间.这意味着如果你以60fps的速度运行,它总是大约1/60秒.

您将位置设置为常量值.

请参阅http://msdn.microsoft.com/en-us/library/microsoft.xna.framework.gametime.elapsedgametime.aspx上的说明.