Предыдущая Следующая
ния в проект остается прежним.
Рис. 9.1. Платформа
126 Устройства ввода
Проект Platform 127
Начнем работу над проектом Platform и добавим в исходный код класса Gamel в область глобальных переменных объявления нового объекта platform класса Sprite.
Sprite platform;
Объект platform не будет анимированным, поэтому при создании объекта используется неанимированный конструктор класса Sprite.
platform = new Sprite();
Затем в методе LoadGraphicsContent() класса Sprite происходит загрузка изображения платформы в игру.
platform.Load(content, "Content\\Textures\\platform");
Далее платформе в методе Initialize() класса Sprite задается позиция на экране монитора.
platform.spritePosition = new Vector2(Window.ClientBounds.Width / 2, Window.ClientBounds.Height - 90);
По оси X выбирается место примерно посередине экрана, в целом это положение по оси может быть любым. Другое дело - положение платформы по оси Y. Нам нужно, чтобы платформа располагалась четко на тросе, который нарисован на фоновом изображении, поэтому от нижней части дисплея отнимается нужное количество пикселей и платформа встает точно на трос. Эта операция несложна -просто когда рисовался задний фон, а вместе с ним и трос, то было сразу просчитано количество необходимых пикселей. В любом случае, если вы ошибетесь и платформа не станет четко на трос, ее всегда можно подвинуть, изменив отнимаемое значение от высоты экрана.
При этом если бы я делал коммерческую игру из этого проекта, то обязательно добавил бы дополнительных красивостей. Например, платформу можно аними-ровать или приделать ей колесики, которые будут крутиться при движении. Сам трос можно сделать отдельным спрайтом и тоже анимировать, или отказаться от платформы и троса и создать мост, рельсы, помпу, лодку на воде, тележку, ковер-самолет, летающий в воздухе, или что-то еще, фантазировать на самом деле в этом плане можно до бесконечности.
Для реализации движения платформы на экране в классе Gamel создается метод MovePlatform(), код которого выглядит следующим образом.
public void MovePlatform() {
// Движение платформы влево и вправо if(keyboardState.IsKeyDown(Keys.Left))
platform.spritePosition.X -= 10;
else if (keyboardState.IsKeyDown(Keys.Right))
platform.spritePosition.X += 10;
// Обработка столкновений с левой и правой частью экрана if(platform.spritePosition.X < 10) platform.spritePosition.X = 10;
else if(platform.spritePosition.X > Window.ClientBounds.Width - 400) platform.spritePosition.X = Window.ClientBounds.Width - 400; Предыдущая Следующая
|