Отображение прямоугольников в игровом окне с XNA

Я хочу разделить свою игровую сетку на массив прямоугольников. Каждый прямоугольник 40x40 и существует 14 прямоугольников в каждом столбце с в общей сложности 25 столбцами. Это покрывает игровую область 560x1000.

Это - код, который я настроил для создания первого столбца прямоугольников на игровой сетке:

Rectangle[] gameTiles = new Rectangle[15];

for (int i = 0; i <= 15; i++)
{
    gameTiles[i] = new Rectangle(0, i * 40, 40, 40);
}

Я вполне уверен, это работает, но конечно я не могу подтвердить это, потому что прямоугольники не представляют на экране для меня для физического наблюдения их. То, что я хотел бы сделать для отладки целей, должно представить границу или заполнить прямоугольник цветом, таким образом, я вижу его на самой игре, только чтобы удостовериться, что это работает.

Существует ли способ заставить это произойти? Или какой-либо относительно простой способ, которым я могу просто удостовериться, что это работает?

Большое спасибо.

7
задан Peter Lillevold 10 May 2010 в 06:29
поделиться

1 ответ

Сначала создайте для прямоугольника белую пиксельную текстуру размером 1x1:

var t = new Texture2D(GraphicsDevice, 1, 1);
t.SetData(new[] { Color.White });

Теперь вам нужно отрендерить прямоугольник - предположим, что прямоугольник называется прямоугольником . Для рендеринга заполненного блока это очень просто - убедитесь, что для оттенка Color установлен тот цвет, который вам нужен. Просто используйте этот код:

spriteBatch.Draw(t, rectangle, Color.Black);

Для границы он более сложный. Вы должны нарисовать 4 линии, составляющие контур (прямоугольник здесь r ):

int bw = 2; // Border width

spriteBatch.Draw(t, new Rectangle(r.Left, r.Top, bw, r.Height), Color.Black); // Left
spriteBatch.Draw(t, new Rectangle(r.Right, r.Top, bw, r.Height), Color.Black); // Right
spriteBatch.Draw(t, new Rectangle(r.Left, r.Top, r.Width , bw), Color.Black); // Top
spriteBatch.Draw(t, new Rectangle(r.Left, r.Bottom, r.Width, bw), Color.Black); // Bottom

Надеюсь, это поможет!

24
ответ дан 6 December 2019 в 07:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: