Предыдущая Следующая
view = Matrix.CreateLookAt(new Vector3(0.0f, 0.0f, 150.0f), Vector3.Zero,
Vector3.Up);
proj = Matrix.CreatePerspectiveFieldOfView(FOV, aspectRatio, nearClip,
farClip);
for (int i = 0; ball.Length > i; {
world = Matrix.CreateTranslation(ball[i].position); ball[i].DrawModel(world, view, proj);
}
break;
}
case CurentGameState.GameOverScreen:
{
break;
}
case CurentGameState.VictoryScreen:
{
break;
} }
base.Draw(gameTime);
304 Движение моделей в пространстве
}
/// <summary> /// Движение мячей /// <summary> void MoveBall() {
for (int i = 0; ball.Length > i;
{
ball[i].position.Y -= ball[i].speed;
}
}
/// <summary> /// Мышка /// <summary> void MouseClick()
{
mouseState = Mouse.GetState(); for (int i = 0; ball.Length > i;
{
if (mouseState.LeftButton == ButtonState.Pressed)
{
ball[i].position.X = rand.Next(-(rand.Next(0, 80)), rand.Next(0, 80));
ball[i].position.Y = rand.Next(0, 80); ball[i].position.Z = -(rand.Next(20, 150));
Глава 20
Стреляем по целям
В игре движение мячей происходит сверху вниз, и задача игрока - не дать упасть мячикам на футбольное поле. С помощью выстрелов, которые должны попасть в мячик, игрок должен удерживать мячи на лету определенное время. Если ему это удалось, то пользователь переходит на новый уровень, если нет, то он пробует играть снова и снова.
Наша задача на данном этапе заключается в том, чтобы добавить в игру прицел для стрельбы по мячам и создать механизм обработки попаданий выстрелов в цель. Как обычно, продолжаем усовершенствовать пример из предыдущей главы, и наш новый проект носит название СигеогВаіі. На компакт-диске этот проект находится в папке Соі1е\СЬаріег20. Открываем проект СигеогВаіі и приступаем к изучению исходного кода примера.
Рис. 20.1. Изображение прицела
20.1. Класс для работы с двухмерными изображениями
В любой трехмерной игре обязательно применяются двухмерные изображения. Наша игра в этом плане не исключение. Для представления на экране прицела мы будем использовать спрайт, нарисованный в виде окружности с рисками и вырезанным фоном (рис. 20.1).
Для работы с прицелом в проект добавится новый класс Sprite, который мы создали за время работы над двухмерной игрой. Как видите, очень полезно создавать классы с фундаментальным подходом, для того чтобы в дальнейшем эти классы можно было использовать многократно, тем более что с каждой новой игрой этот самый класс можно усовершенствовать.
20.2. Задаем радиус для мячей Предыдущая Следующая
|