Приставки
Nintendo (Dendy)
Nintendo 64
Sega Genesis
Sega CD / 32x
Master System
Super Nintendo
Turbo Grafx 16
Sega Saturn
Sony PlayStation
GameBoy Advance
GameBoy / Color
Game Gear
Atari
Другие

Утилиты
Системные утилиты
GoodXXXX
Sega CD / 32x
Nintendo 64
Переводы, хакинг
Музыка

Мир приставочных игр

Версия 2.00a

Leonis © 2002-2009
Команда Новости Помощь Ссылки
ПОМОЩЬ
Литература про игры
Предыдущая Следующая

Другая часть объектов игры может перемещаться на основе своей логики, запрограммированной создателем. Такая логика в играх называется игровым искусственным интеллектом. В этой главе мы наделим наши игровые объекты простейшими алгоритмами игровой логики, научив их перемещаться в заданном направлении, а также выбирать себе случайное место в игровом пространстве. Использование более мощных алгоритмов искусственного интеллекта в нашей игре не понадобится, но если вы интересуетесь этим вопросом серьезно, то рекомендую вам изучить книгу издательства ДМК Пресс «Программирование искусственного интеллекта в приложениях», автор М. Тим Джонс.

Итак, что такое движение в пространстве? Каждый спрайт при выводе на экран монитора получает свои координаты по двум осям X и Y, например:

Vector2 spritePosition = new Vector2(100, 300);

Также может иметь место и следующая запись:

Vector2 spritePosition; spritePosition.X = 100; spritePosition.Y = 300;

В этих строках кода позиция для спрайта задается по оси X в 100 пикселей (от левого верхнего угла экрана) и по оси Y в 300 пикселей вниз все от того же верхнего левого угла. Чтобы переместить спрайт в заданном направлении, необходимо просто изменить позицию спрайта или стереть спрайт с экрана в старом месте и нарисовать его уже на новом месте. То есть если вы желаете переместить спрайт сверху вниз (только по оси Y), то необходимо на каждой итерации игрового цикла

110 Движение спрайтов в пространстве

Движение спрайтов в пространстве 111

или в один проход исходного кода метода UpdateO класса Gamel изменить или увеличить позицию спрайта на определенное количество пикселей, например:

// Обновляем состояние игры

protected override void Update(GameTime gameTime) {

spritePosition.Y += 3;

}

В этом примере мы на каждой итерации игрового цикла, то есть за один кадр, увеличиваем позицию спрайта на 3 пикселя. Циклическое увеличение позиции спрайта по оси Y на 3 пикселя в каждой итерации игрового цикла (перерисовка спрайта на новом месте) создаст эффект движения спрайта по экрану сверху вниз.

Получается, что значение в 3 пикселя задает фактическую скорость для движения спрайта по экрану. Меньшее от 3 пикселей значение (например, 1 пиксель) уменьшит скорость перемещения спрайта по экрану, а большее значение (например, 5 пикселей) соответственно увеличит скорость движения спрайта. В целом выбирать скорость для движения объектов в игре необходимо аккуратно и на основе большого количества тестов игры. Дело в том, что очень много хороших и красивых игр из-за неправильно выбранной скорости объектов и главного героя проигрывают менее удачным играм. Если выбрать маленькую скорость для объекта, то пользователю может казаться, что игра несколько тормозит и лишена динамики. Если, в свою очередь, скорость будет сильно большой, то осуществлять контроль над игрой будет чрезвычайно трудно. Но в любом случае все зависит именно от той задачи, которую вы реализовываете в вашей игре.


Предыдущая Следующая

Горяченькое

Друзья

Hosted by uCoz