Нужен ли прямоугольнику текстура для рисования? - PullRequest
0 голосов
/ 05 марта 2020

Я хочу нарисовать несколько прямоугольников, чтобы создать границы для моего игрока. Когда я пошел рисовать их, я заметил, что нужна текстура. Это смутило меня и заставило задуматься, нужна ли ему текстура.

1 Ответ

1 голос
/ 06 марта 2020

На самом деле да, вам нужна текстура, чтобы нарисовать прямоугольник. Это звучит странно, если вы просто хотите создать границы вокруг объекта. Решение для этого состоит в том, чтобы создать «1-пиксельную текстуру», которую вы рисуете соответственно:

public Texture2D pixel;
protected override void Initialize()
{
    ...
    pixel = new Texture2D(GraphicsDevice, 1, 1);
    pixel.SetData(new[] { Color.White }); //
    ...
}

protected override void Draw(GameTime gameTime)
{
    ...
    int bw = 2; // Border width
    spriteBatch.Draw(pixel, new Rectangle(Player.PlayerPositionRectangle.Left, Player.PlayerPositionRectangle.Top, bw, Player.PlayerPositionRectangle.Height), Color.Black); // Left
    spriteBatch.Draw(pixel, new Rectangle(Player.PlayerPositionRectangle.Right, Player.PlayerPositionRectangle.Top, bw, Player.PlayerPositionRectangle.Height), Color.Black); // Right
    spriteBatch.Draw(pixel, new Rectangle(Player.PlayerPositionRectangle.Left, Player.PlayerPositionRectangle.Top, Player.PlayerPositionRectangle.Width, bw), Color.Black); // Top
    spriteBatch.Draw(pixel, new Rectangle(Player.PlayerPositionRectangle.Left, Player.PlayerPositionRectangle.Bottom, Player.PlayerPositionRectangle.Width, bw), Color.Black); // Bottom
    ...
}

Примечание: в моем случае «PlayerPositionRectangle» - это просто позиция игрока, включая размер текстуры игрока. Вы можете добавить смещения для диапазона взаимодействия, столкновения или чего угодно:

Rectangle(X, Y, spriteWidth, spriteHeight);
...