2013-04-27 3 views
0

Я знаю, что вы можете получить ширину и высоту класса Texture2d, но почему вы не можете получить координаты x и y? Должен ли я создавать отдельные переменные для них или что-то еще? Кажется, очень много работы.Координаты Texture2d?

+0

A Texture2D - это просто текстура, у нее нет места в вашей игре. Вы должны создать класс или структуру для обработки позиции и текстуры. – Cyral

ответ

1

Вы должны использовать Vector2 -объект в связи с Texture2D -объектом. A Texture2D-сам объект не имеет никаких координат.
Если вы хотите нарисовать текстуру, вам понадобится SpriteBatch, чтобы нарисовать ее, тогда как для определения координат потребуется Vector2D.

public void Draw (
    Texture2D texture, 
    Vector2 position, 
    Color color 
) 

Это взято из MSDN.

Таким образом, либо создать struct

struct VecTex{ 

    Vector2 Vec; 
    Texture2D Tex; 

} 

или класс, когда вам нужна дополнительная обработка.

1

Один объект Texture2D не имеет никаких координат экрана x и y.
Чтобы нарисовать текстуру на экране, вы должны либо установить ее положение, используя Vector2 или Rectangle.

Вот пример использования 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(); 
} 

А вот пример использования Прямоугольник:

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(); 
} 

Основное отличие заключается в том, что с помощью Rectangle вы можете масштабировать текстуру, чтобы соответствовать ширину и высоту прямоугольника назначения.

Дополнительную информацию о методе SpriteBatch.Draw вы можете найти на странице MSDN.