Предыдущая Следующая
Теперь переходим к конструктору класса и инициализируем все объекты и переменные, а в методе LoadGraphicsContent() добавляем загрузку изображения курсора в игру.
mouse = new Sprite(); bbMouse = new BoundingBox(); bbCursorGame = new BoundingBox(); bbCursorExit = new BoundingBox();
тоиэе.ЬоасЦсопгепг-, "СопгепгЛХТехг-игезХХтоиэе");
Далее в методе ирС^е(), в том месте, где мы в предыдущем проекте запускали работу меню и обрабатывали перемещение по клавиатуре Вверх и Вниз, добавляем вызов нового метода UpdateMouse(), к работе над которым сейчас приступим.
Что касается исходного кода в меню, отвечающего за обработку событий, полученных клавиатуры, то этот код можно удалить, а можно оставить. Если оставите, то пользователь сможет работать как с мышью, так и с клавиатурой, соответственно если удалите, то остается возможность работы только с мышью. Здесь
184 Создаем игровое меню
Проект MenuCursor 185
поступайте, как вам больше нравится, но я удалил код клавиатуры, чтобы вы элементарно не путались в лишних нагромождениях строк кода.
Сейчас мы работаем исключительно с мышью, поэтому давайте создадим в коде класса Game1 новый метод UpdateMouse() и возложим на него несколько ответственных задач, а в частности получение координат курсора, слежение за пересечением прямоугольников и обработку нажатия левой клавиши мыши.
public void UpdateMouse()
{
// Получаем местонахождение курсора мыши mouseState = Mouse.GetState(); mouse.spritePosition.X = mouseState.X; mouse.spritePosition.Y = mouseState.Y;
//-----------------------------------
// Создаем ограничивающие прямоугольники для курсора и табличек bbMouse.Min = new Vector3(mouse.spritePosition.X, mouse.spritePosition.Y, 0);
bbMouse.Max = new Vector3(mouse.spritePosition.X + mouse.spriteTexture.Width,
mouse.spritePosition.Y + mouse.spriteTexture.Height, 0);
bbCursorGame.Min = new Vector3(650, 400, 0); bbCursorGame.Max = new Vector3(950, 500, 0);
bbCursorExit.Min = new Vector3(650, 600, 0); bbCursorExit.Max = new Vector3(950, 700, 0);
//-----------------------------------
// Обрабатываем пересечение прямоугольников if (bbMouse.Intersects(bbCursorGame))
{
menu.cursorPositionGame = new Vector2(650, 400); menu.cursorPositionExit = new Vector2(700, 550); cursorState = 1;
}
if (bbMouse.Intersects(bbCursorExit))
{
menu.cursorPositionGame = new Vector2(700, 400); menu.cursorPositionExit = new Vector2(650, 550); cursorState = 2;
}
//----------------------------------- Предыдущая Следующая
|