XNA得到一个精灵's左上角坐标
本文关键字:坐标 左上角 精灵 一个 XNA | 更新日期: 2023-09-27 17:54:34
我在获取精灵的左上角坐标时遇到了麻烦。我尝试使用texture2d。边界与边界。位置。X 'y或bounds.left'top…但由于某些原因,这些参数是x=0, y=0,并且对象的移动不会改变它(即使起点不是0,0)。我怎么解决这个问题?
Texture2D.Bounds
获取资源的大小,如MSDN文档所示。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);
}
}