我正在尝试使用变量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游戏模板在更新功能中调用上面的单行
这是因为gameTime.ElapsedGameTime自上次"框架"以来经过的时间.这意味着如果你以60fps的速度运行,它总是大约1/60秒.
您将位置设置为常量值.
请参阅http://msdn.microsoft.com/en-us/library/microsoft.xna.framework.gametime.elapsedgametime.aspx上的说明.