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

/// <summary>

/// Рисуем заставку

/// <summary>

public void DrawScreen(SpriteBatch spriteBatch, GraphicsDeviceManager graphics, int x, int y, GameTime gameTime)

{

Рисуем на экране все двухмерные изображения.

graphics.GraphicsDevice.Clear(Color.DarkGreen); spriteBatch.Begin(SpriteBlendMode.AlphaBlend);

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

342 Последние штрихи

spriteBatch.Draw(title, new Vector2(x /2 - title.Width/2, 30), Color.White);

Футбольное поле ставим четко в центр экрана.

spriteBatch.Draw(screen, new Vector2(x/2 - screen.Width/2, y/2 — screen.Height/2), Color.White);

Надпись «Нажмите - А» по ширине экрана находится в самом центре, а по высоте приподнята на тридцать пикселей от нижней части экрана.

spriteBatch.Draw(enter, new Vector2(x / 2 - enter.Width / 2, y - 30 — enter.Height), Color.White); for (int i = 0; hole.Length > i;

{

spriteBatch.Draw(hole[i], position[i], Color.White);

}

spriteBatch.End();

Теперь пришло время вывести на экран мяч.

graphics.GraphicsDevice.RenderState.DepthBufferEnable = true;

Позиция глаз для мячика удалена на 230 пикселей. Таким образом, мы удалили мяч от себя и в то же время уменьшили его в размерах. При желании можно сам мяч уменьшить, например, в 3ds Max, и тогда позиция камеры может быть намного меньше, вплоть до единичного значения по оси Z. Тут все зависит от физического размера самой модели.

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

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

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

angle += (float)(gameTime.ElapsedGameTime.TotalSeconds * 3.0f);

Затем для вращения мячика именно по оси Y используется метод CreateRotationY(), который возвращает матрицу вращения по оси Y.

rotationMatrixY = Matrix.CreateRotationY((float)angle);

Если вы вспомните главу 15, где мы разбирали основы программирования трехмерной графики и, в частности, раздел, связанный с матрицей вращения по оси Y, то вам сразу станет понятно, как работает метод CreateRotationY().

Заставки Помощь, Об игре и Книги 343

Для того чтобы все установки вращения вступили в силу, нужно умножить матрицу вращения на матрицу трансляции и сохранить итоговый результат в мировой матрице.


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

Горяченькое

Друзья

Hosted by uCoz