我在获取精灵的左上角坐标时遇到了麻烦。我尝试将texture2d.bounds与bounds.location.x \ y或bounds.left \ top ...一起使用但是由于某种原因,这些参数是x = 0,y = 0并且对象的移动不会#39 ; t改变它(即使起始点不是0,0)。 我怎么解决这个问题?
答案 0 :(得分:3)
Texture2D.Bounds
获取资源的大小,如MSDN document所示。 X
和Y
位置始终为0,您永远不需要它们,Bounds
的唯一原因是获得Width
和Height
纹理。
据说,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);
}
}