Предыдущая Следующая
switch (state) {
case 1:
spriteBatch.Draw(cursor, new Vector2(x / 2 - cursor.Width / 2, y / 2 — 115), Color.White); break;
case 2:
spriteBatch.Draw(cursor, new Vector2(x / 2 - cursor.Width / 2, y / 2 — 65), Color.White); break;
case 3:
spriteBatch.Draw(cursor, new Vector2(x / 2 - cursor.Width / 2, y / 2 — 15), Color.White); break;
case 4:
spriteBatch.Draw(cursor, new Vector2(x / 2 - cursor.Width / 2, y / 2 + 30), Color.White);
break; case 5:
spriteBatch.Draw(cursor, new Vector2(x / 2 - cursor.Width / 2, y / 2 + 80), Color.White); break; }
Если вы не совсем разобрались с расчетами позиций подложки на экране, то возьмите обычный листок бумаги и карандаш. Нарисуйте виртуальный экран монитора и проследите за изменениями позиций желтой текстуры.
spriteBatch.Draw(screen, new Vector2(x / 2 - screen.Width / 2, y / 2 — screen.Height / 2), Color.White); for (int i = 0; hole.Length > i; {
spriteBatch.Draw(hole[i], position[i], Color.White);
}
spriteBatch.End();
graphics.GraphicsDevice.RenderState.DepthBufferEnable = true; view = Matrix.CreateLookAt(new Vector3(0.0f, 0.0f, 260.0f), Vector3.Zero, Vector3.Up);
proj = Matrix.CreatePerspectiveFieldOfView(FOV, aspectRatio, nearClip,
farClip);
angle += (float)(gameTime.ElapsedGameTime.TotalSeconds * 1.0f); rotationMatrixY = Matrix.CreateRotationY((float)angle); rotationMatrixZ = Matrix.CreateRotationZ((float)angle); for (int i = 0; ball.Length > i;
{
world = Matrix.CreateTranslation(ball[i].position); ball[i].DrawModel(world * rotationMatrixY * rotationMatrixZ, view, proj);
}
} } }
22.5. Смена игровых состояний в классе Gamel
Для смены игровых состояний в классе Game1 мы применяем структуру CurentGameState и структурную переменную gameState. До этого момента эта переменная нас «выкидывала» сразу в игровой процесс. Теперь пришла пора изменить ее значение, которое теперь будет запускать титульную заставку.
CurentGameState gameState = CurentGameState.SplashScreen;
С титульной заставки по нажатии клавиши Enter и смены значения переменной gameState с CurentGameState.SplashScreen на значение Curent-GameState.GameScree, в игре включится показ меню. В дальнейшем для смены состояний игры нам достаточно присвоить переменной gameState необходимое
348 Последние штрихи
Смена игровых состояний в классе Game1
349
значение, и мы выберем то или иное игровое состояние. Теперь поговорим о механизме смены состояний и показа заставок.
22.5.1. Создаем объекты для меню и заставок Предыдущая Следующая
|