XNA得到一个精灵's左上角坐标

本文关键字:坐标 左上角 精灵 一个 XNA | 更新日期: 2023-09-27 17:54:34

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

XNA得到一个精灵's左上角坐标

Texture2D.Bounds获取资源的大小,如MSDN文档所示。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);
    }
}