Приставки
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
Команда Новости Помощь Ссылки
ПОМОЩЬ
Литература про игры
Предыдущая Следующая

Выбирая позицию для мячика по оси Х, для минимального значения задается диапазон чисел от 0 до -80. Для максимального числа используем значения от

Рис. 19.1. Выбор позиции на экране

298 Движение моделей в пространстве

Случайный выбор позиции на экране 299

0 до 80, но уже в положительной плоскости оси Х. Дополнительно по оси Z устанавливается диапазон чисел от -20 до -150, что позволяет удалять или приближать мячики в пространстве. Посмотрите на рис. 19.1, где показана техника выбора позиции мячей на экране.

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

19.4. Установка матриц

Матрицы преобразований остаются у нас прежними. Сначала задается точка просмотра сцены с помощью видовой матрицы.

view = Matrix.CreateLookAt(new Vector3(0.0f, 0.0f, 150.0f), Vector3.Zero, Vector3.Up);

Затем устанавливается проекционная матрица, и здесь тоже ничего не изменяется по сравнению с предыдущим примером.

proj = Matrix.CreatePerspectiveFieldOfView(FOV, aspectRatio, nearClip, farClip);

После чего формируется цикл for, где устанавливается мировая матрица для трех мячиков, а все итоговые значения матриц передаются в качестве параметров в метод DrawModel().

for (int i = 0; ball.Length > i;

{

world = Matrix.CreateTranslation(ball[i].position); ball[i].DrawModel(world, view, proj);

}

19.5. Формируем метод для перемещения моделей

Теперь пришло время для создания метода, который будет перемещать мячик в пространстве. Здесь алгоритм действий простой: необходимо с помощью ранее созданной переменной speed изменять позицию мячей по оси Y так, как мы это делали в игре «Летящие в прерии».

void MoveBall()

{

for (int i = 0; ball.Length > i;

{

ball[i].position.Y -= ball[i].speed;

}

}

Мячи в игре падают сверху вниз, а значит, нам нужно отнимать от текущих позиций объектов заданное количество пикселей (20.0f/60.0f). Метод MoveBall() вызывается в методе Update() класса Game1 на каждой новой итерации игрового цикла. Каждая новая позиция объекта, представленная переменной position, передается в мировую матрицу, где для движения объекта в работу включается механизм переноса всех вершин модели в пространстве (те самые мировые преобразования).

19.6. Случайный выбор позиции на экране


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

Горяченькое

Друзья

Hosted by uCoz