Двухмерная графика

Добавление спрайтов

Последнее обновление: 14.11.2015

Возьмем ранее созданный пустой проект для десктопной версии Windows (или создадим новый проект для десктопной версии Windows для DirectX). Этот проект ничего не делает и пока просто выводит окно приложения, закрашенное синим цветом. Теперь разнообразим проект.

Редкое игровое приложение обходится без спрайтов. Спрайты представляют собой изображения, которые интегрированы в игровую сцену. Для различных игровых объектов могут быть свои спрайты. Для использования спрайтов добавим в проект какой-нибудь файл изображения.

Для этого откроем в проекте папку Content и затем нажмем на Content.mgcb. После этого должно открыться следующее окно:

Если вдруг узел Content в левом верхнем углу отсутствует, то в этом случае надо открыть дополнительно в этом окне через меню File->Open открыть файл Content.mgcb. В последующем он будет автоматически открываться.

Далее через меню Edit - > Add -> Existing Item... добавим файл изображения:

Добавление спрайта в MonoGame

Если файл изображения находится вне проекта, то отобразится специальное окно с вопросом, надо ли копировать файл в папку проекта.

Оставим выбор по умолчанию и нажмем OK. После этого файл изображения будет добавлен в проект. И нам надо будет выполнить построение с помощью меню Build -> Build:

Итак, изображение добавлено. Теперь используем его в приложении. Для этого возьмем стандартный код в файле Game1.cs и изменим его следующим образом:

using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework.Input;

namespace Game1
{
    public class Game1 : Game
    {
        GraphicsDeviceManager graphics;
        SpriteBatch spriteBatch;
        Texture2D texture;

        public Game1()
        {
            graphics = new GraphicsDeviceManager(this);
            Content.RootDirectory = "Content";
        }

        protected override void Initialize()
        {
            base.Initialize();
        }

        protected override void LoadContent()
        {
            spriteBatch = new SpriteBatch(GraphicsDevice);
            texture = Content.Load<Texture2D>("monokot");
        }

        protected override void UnloadContent()
        {

        }

        protected override void Update(GameTime gameTime)
        {
            if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed || Keyboard.GetState().IsKeyDown(Keys.Escape))
                Exit();

            base.Update(gameTime);
        }
		
		protected override void Draw(GameTime gameTime)
        {
            GraphicsDevice.Clear(Color.CornflowerBlue);
			// отрисовка спрайта
            spriteBatch.Begin();
            spriteBatch.Draw(texture, Vector2.Zero, Color.White);
            spriteBatch.End();
			
            base.Draw(gameTime);
        }
    }
}

Изменений здесь на самом деле не так много. Во-первых, была добавлена глобальная переменная типа Texture2D, которая будет хранить изображение:

Texture2D texture;

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

Далее нам надо загрузить изображение в эту переменную. Загрузка ресурсов происходит в методе LoadContent():

texture = Content.Load<Texture2D>("monokot");

В моем случае изображение называется monokot.jpg. При загрузке изображения в проект соответствующий ему ресурс называется по имени файла без расширения. Поэтому для загрузки графического ресурса в переменную я использую название "monokot". Соответственно, если у вас отличается название файла, то в данном случае его надо использовать вместо "monokot".

Метод Load класса ContentManager загружает ресурс. Поскольку этот метод является обобщенным, то нам также надо в угловых скобках указать тип ресурса - Texture2D. И после загрузки объект изображения готов к использованию.

В методе Draw() происходит отрисовка спрайта:

spriteBatch.Begin();
spriteBatch.Draw(texture, Vector2.Zero, Color.White);
spriteBatch.End();

Для отрисовки используется объект spriteBatch, тип которого - SpriteBatch. Этот объект автоматически добавляется в проект при его создании и инициализируется в методе LoadContent. Отрисовка происходит между вызовами Begin и End объекта SpriteBatch.

Метод spriteBatch.Draw(), который выводит спрайт, принимает три параметра:

  • texture: представляет тип Texture2D, то есть фактически изображение, которое надо нарисовать

  • position: представляет тип Vector2 и указывает на координаты верхнего левого угла, в котором происходит отрисовка изображения. В данном случае для этого параметра передается значение Vector2.Zero, которое означает нулевые координаты для X и Y (отсчет координат идет от верхнего левого угла)

  • color: представляет тип Color и указывает на цвет подцветки

И при запуске приложения отобразится изображение:

Отрисовка спрайтов в MonoGame
Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850