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

Vector3 direction = farPoint - nearPoint; direction.Normalize();

Ray pickRay = new Ray(nearPoint, direction); return pickRay;

}

} }

ФЗаметьте, что координаты прицела на самом деле находятся не в его центре, а в левом верхнем углу изображения мушки. Это связано с тем, что получая координаты курсора мыши, методом Mouse.GetState(), мы получаем координаты верхнего левого угла курсора. При желании вы можете переопределить полученные значения непосредственно в центр прицела.

Глава 21

Формируем _трехмерную сцену

Способов создания полноценных трехмерных сцен очень много. Выбор того или иного способа целиком зависит от игровых задач. В игре «Футбольный стрелок» наша камера статична и находится в одном положении, поэтому для организации сцены был выбран механизм загрузки в игру модели стадиона. Суть этого способа заключается в том, чтобы загрузить в игру модель стадиона и установить камеру под определенным углом, а затем на фоне стадиона развернуть все игровые действия.

Для текущего примера был создан новый проект под названием Plane, который находится на компакт-диске в папке Code\Chapter21\Plane. Начиная с раздела 21.1, мы приступим к его изучению. Дополнительно в папке Code\Chapter21\ имеется еще один проект под названием PlaneMove. В нашей игре нет необходимости перемещаться по полю стадиона, но показать вам, как это делается, нужно обязательно. После изучения проекта Plane рассмотрите исходный код примера PlaneMove, думается, что этот пример вам обязательно пригодится в своих собственных играх.

21.1. Изменяем позицию камеры

Переходим к работе над игрой и начнем с того, что добавим в исходный код класса Gamel проекта Plane новую переменную camera.

Vector3 camera = new Vector3(0.0f, 20.0f, 250.0f);

Эта переменная будет задавать одинаковую позицию просмотра сцены для мячей и футбольного стадиона.

// метод Draw()

view = Matrix.CreateLookAt(camera, Vector3.Zero, Vector3.üp);

А также для вычисления позиции курсора мыши.

// метод GetPickRay()

Ray GetPickRay()

{

view = Matrix.CreateLookAt(camera, Vector3.Zero, Vector3.Up);

}

318 Формируем трехмерную сцену

Новые игровые позиции для мячей 319

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

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


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

Горяченькое

Друзья

Hosted by uCoz