Я знаю, что вы можете получить ширину и высоту класса Texture2d
, но почему вы не можете получить координаты x и y? Должен ли я создавать отдельные переменные для них или что-то еще? Кажется, очень много работы.Координаты Texture2d?
ответ
Вы должны использовать Vector2
-объект в связи с Texture2D
-объектом. A Texture2D
-сам объект не имеет никаких координат.
Если вы хотите нарисовать текстуру, вам понадобится SpriteBatch
, чтобы нарисовать ее, тогда как для определения координат потребуется Vector2D
.
public void Draw (
Texture2D texture,
Vector2 position,
Color color
)
Это взято из MSDN.
Таким образом, либо создать struct
struct VecTex{
Vector2 Vec;
Texture2D Tex;
}
или класс, когда вам нужна дополнительная обработка.
Один объект 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.
- 1. Назначение Texture2D существующей Texture2D
- 2. XNA - Преобразование Texture2D [,] в Texture2D
- 3. Стоимость Texture2D в GLSL
- 4. SharpDX: Создайте D3D11.Texture2D из D3D10.Texture2D?
- 5. Отрежьте отверстия в Texture2D
- 6. Масштабирование Texture2D в XNA
- 7. Texture2D как параметр функции
- 8. GLSL texture1D против Texture2D
- 9. Render to texture2d XNA
- 10. Динамическое изменение Texture2D
- 11. Texture2D to front
- 12. Загрузки Texture2D с Последовательностью
- 13. GLSL Texture2D ускорив
- 14. XNA Texture2D GetData
- 15. Texture2D Ошибка SetData
- 16. Загрузка Texture2D непостоянно сбой
- 17. Получить Texture2D игрыObject
- 18. Unity3d изменение цвета Texture2D
- 19. XNA Texture2D List outOfRangeException
- 20. Bind Texture2D и TextureCube
- 21. Xna: Mocking Texture2D
- 22. XNA Texture2D Dispose() + ObjectDisposedException
- 23. texture2D splitting in XNA
- 24. Утечка памяти с Texture2D
- 25. Texture2D iPhone SDK openGL
- 26. Динамического создания Texture2D
- 27. NullReference Exception in texture2d
- 28. Загрузка изображения как Texture2D
- 29. Загрузка .bmp в Texture2D
- 30. Создать Rounded Rectangle Texture2D
A Texture2D - это просто текстура, у нее нет места в вашей игре. Вы должны создать класс или структуру для обработки позиции и текстуры. – Cyral