【发布时间】:2012-05-05 08:45:33
【问题描述】:
为什么 Vector2(来自 XNA 的库)使用 float 而不是 int?
计算机屏幕上的位置以像素为单位,因此光标位置可以由两个 integers 定义。没有像 半个像素 这样的东西。那我们为什么要使用浮点数呢?
在 SpriteBatch 类中,我发现了 7 个称为 Draw 的重载方法。其中两个:
public void Draw(Texture2D texture, Rectangle destinationRectangle, Color color);
public void Draw(Texture2D texture, Vector2 position, Color color);
所以我们可以看到 Draw 接受 int 和 float 坐标。
我在实现游戏对象的屏幕坐标时遇到了这个问题。我假设 Rectangle 是保存对象大小和屏幕坐标的好选择。但现在我不确定...
【问题讨论】:
-
使用标量时,请始终使用十进制数。或者,如果您的速度为 0.1f,并且您不断将其添加到 int,则位置将保持不变。但是有了浮动,这会让你的位置不断增加。
-
@patryk - 除了简单的屏幕像素位置之外,Vector2 还用于许多其他事情。大多数其他用途涉及算术,其中需要比整数更精细的精度。
-
另外,使用
Draw(Texture2D, Rectangle, Color)可以将纹理“缩放”到目标矩形,但Draw(Texture2D, Vector2D, Color)将使用Texture2Ds.Width和.Height。
标签: xna floating-point int draw spritebatch