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

static float nearClip = l.0f;

static float farClip = l000.0f;

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

Следующая переменная FOV призвана определять поле зрения. Здесь типичное значение равно MathHelper.PiOver4. Две оставшиеся переменные nearClip и farClip позволяют задать соответственно переднюю и заднюю области отсечения и участвуют в проекционных расчетах.

Затем в исходном коде у нас следует объявление объекта model класса Model, который будет представлять мячик в игре.

282 Загружаем в игру модель

Рисуем модель на экране монитора 283

private Model model;

private Vector3 positionModel

Переменная positionModel необходима для выбора позиции модели на экране. В конструкторе класса Gamel мы задаем позицию модели в пространстве нулевыми значениями.

positionModel = new Vector3(0, 0, 0);

Нулевые значения для позиции модели при нахождении камеры в центре экрана устанавливают модель четко в центр экрана. Помните, в главе 16 мы говорили о преобразовании системы координат модели в свою локальную, или объектную, систему координат. Так вот, используя в исходном коде три ранее созданные матрицы (мировую, видовую и проекционную), мы создадим для объекта свою локальную систему координат.

После этих действий все свои установки объектов на позиции в трехмерном мире вам придется вести относительно локальной системы координат объекта и позиции камеры (о которой мы поговорим позже в этой главе). Если камера стоит в центре экрана (X = 0 и Y = 0, по оси Z камера либо приближается, либо удаляется от центра экрана) и у объекта нулевые координаты, то местоположение объекта всегда будет точно в центре монитора (рис. 18.5).

Переходим в тело метода Initialize(). Здесь появляется только одна новая запись, которая инициализирует переменную aspectRatio значением, равным делению половины ширины экрана на половину высоты экрана.

aspectRatio = (float)screenWidth / (float)screenHeight;

Эта стандартная запись, но ранее до метода Initialize() мы не могли использовать такую запись, поскольку лишь в этом методе несколькими строками выше (см. исходный код этого метода в листинге 18.1) определили свойства видеоадаптера, установленного в системе. Если использовать эту запись прежде, до определения настроек адаптера, то переменная aspectRatio получит системное значение, равное по умолчанию размеру 800/600 пикселей, и тогда ваш коэффициент сжатия будет некорректным.


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

Горяченькое

Друзья

Hosted by uCoz