Предыдущая Следующая
for (int i = 0; sprite.Length > i;
{
sprite[i] = new Sprite(l2, l0);
}
118 Движение спрайтов в пространстве
Проект MoveSpriteArray 119
Рис. 8.3. Изображения, загружаемые в игру
Единственное условие в этой конструкции кода заключается в том, чтобы все изображения имели одинаковую анимационную последовательность, то есть количество фреймов всех изображений должно быть одинаково (как у нас в игре). Если одно и более изображений имеют различное количество фреймов, то придется загружать каждый спрайт по отдельности, сделать это можно, например, следующим образом:
sprite[0] = new Sprite(5, 3);
sprite[1] = new Sprite(8, 2);
sprite[2] = new Sprite(2, 2);
sprite[3] = new Sprite(3, 1);
sprite[4] = new Sprite(15, 2);
После создания массива данных переходим к методу LoadGraphicsContent() и к загрузке в массив данных графических изображений.
sprite[0].Load(content, "Content\\Textures\\0");
sprite[1].Load(content, "Content\\Textures\\1");
sprite[2].Load(content, "Content\\Textures\\2");
sprite[3].Load(content, "Content\\Textures\\3");
sprite[4].Load(content, "Content\\Textures\\4");
Названия для изображений я специально задал в виде цифровых значений, чтобы был понятен механизм загрузки графики для каждого элемента массива данных. Кстати, поскольку имена изображений совпадают с данными массива, то можно реорганизовать вышеприведенный код в цикл, но эти действия выполняйте самостоятельно - домашнее задание ;)
Теперь перейдем к первичной установке всех спрайтов на свои игровые позиции, которые реализованы в методе Initialize().
protected override void Initialize() {
j = 0;
for (int i = 0; sprite.Length > i;
{
sprite[i].spritePosition = new Vector2(rand.Next(10, Window.ClientBounds.Width - 500), j = j - 300);
}
base.Initialize();
}
Для инициализации используется цикл. В качестве координаты по оси X для каждого спрайта применяется механизм случайного выбора позиции по ширине игровой области экрана. Этот механизм мы подробно рассмотрели в предыдущем проекте. А вот установка точки отсчета по оси Y проходит в несколько другом ключе с использованием переменной j = j - 300.
Здесь мы используем промежуточную переменную j, которая инициализируется нулевым значением. На каждой итерации цикла значение этой переменной уменьшается на 300 пикселей, что позволяет установить все спрайты как бы друг за другом на расстоянии 300 пикселей, и они не накладываются один на другой (рис. 8.4). Этот простой алгоритм позволяет нам избежать наложений спрайтов Предыдущая Следующая
|