XNA获得精灵的左上角坐标

时间:2014-03-28 22:39:26

标签: c# xna location coordinates bounds

我在获取精灵的左上角坐标时遇到了麻烦。我尝试将texture2d.bounds与bounds.location.x \ y或bounds.left \ top ...一起使用但是由于某种原因,这些参数是x = 0,y = 0并且对象的移动不会#39 ; t改变它(即使起始点不是0,0)。 我怎么解决这个问题?

1 个答案:

答案 0 :(得分:3)

Texture2D.Bounds获取资源的大小,如MSDN document所示。 XY位置始终为0,您永远不需要它们,Bounds的唯一原因是获得WidthHeight纹理。

据说,Texture2D只代表一个纹理,它们代表一个位置。你需要做的是使用Vector2,一个二维向量来定位你的精灵。

示例:

Texture2D sprite;
Vector2 position;
...
protected override void Draw(GameTime gameTime)
{
    spriteBatch.Begin();
    spriteBatch.Draw(sprite, position, Color.White)
    spriteBatch.End();
}

相反为每个精灵创建一个位置和纹理,你可以创建一个单独的精灵类来处理你的位置,纹理和绘图。

public class Sprite
{
    public Texture2D Texture { get; set; }
    public Vector2 Position { get; set; }

    public Sprite(Texture2D texture, Vector2 initialPosition)
    {
         Texture = texture;
         Position = initialPosition;
    }
    public virtual void Draw(SpriteBatch spriteBatch, GameTime gameTime)
    {
        spriteBatch.Draw(Texture, Position, Color.White);
    }
}