我知道你可以获得类Texture2d
的宽度和高度,但为什么你不能得到x和y坐标?我是否必须为它们创建单独的变量?好像很多工作。
答案 0 :(得分:1)
您必须使用与Vector2
- 对象关联的Texture2D
- 对象。 Texture2D
- 对象本身没有任何坐标
当你想绘制纹理时,你需要SpriteBatch
来绘制它,而这需要Vector2D
来确定坐标。
public void Draw (
Texture2D texture,
Vector2 position,
Color color
)
这取自MSDN。
所以,要么创建一个struct
struct VecTex{
Vector2 Vec;
Texture2D Tex;
}
或需要进一步处理的课程。
答案 1 :(得分:1)
仅Texture2D对象没有任何屏幕x和y坐标。
为了在屏幕上绘制纹理,您必须使用Vector2或矩形设置它的位置。
以下是使用Vector2的示例:
private SpriteBatch spriteBatch;
private Texture2D myTexture;
private Vector2 position;
// (...)
protected override void LoadContent()
{
// Create a new SpriteBatch, which can be used to draw textures.
spriteBatch = new SpriteBatch(GraphicsDevice);
// Load the Texture2D object from the asset named "myTexture"
myTexture = Content.Load<Texture2D>(@"myTexture");
// Set the position to coordinates x: 100, y: 100
position = new Vector2(100, 100);
}
protected override void Draw(GameTime gameTime)
{
spriteBatch.Begin();
spriteBatch.Draw(myTexture, position, Color.White);
spriteBatch.End();
}
以下是使用Rectangle的示例:
private SpriteBatch spriteBatch;
private Texture2D myTexture;
private Rectangle destinationRectangle;
// (...)
protected override void LoadContent()
{
// Create a new SpriteBatch, which can be used to draw textures.
spriteBatch = new SpriteBatch(GraphicsDevice);
// Load the Texture2D object from the asset named "myTexture"
myTexture = Content.Load<Texture2D>(@"myTexture");
// Set the destination Rectangle to coordinates x: 100, y: 100 and having
// exactly the same width and height of the texture
destinationRectangle = new Rectangle(100, 100,
myTexture.Width, myTexture.Height);
}
protected override void Draw(GameTime gameTime)
{
spriteBatch.Begin();
spriteBatch.Draw(myTexture, destinationRectangle, null, Color.White);
spriteBatch.End();
}
主要区别在于,通过使用矩形,您可以缩放纹理以适合目标矩形的宽度和高度。
您可以在MSDN找到有关SpriteBatch.Draw方法的更多信息。