Предыдущая Следующая
□ Random.Next(int32, int32) - этот вид метода с двумя параметрами позволяет задавать диапазон от выбранного минимального числа до максимального числа. Например, вызов метода со значениями Next(15, 2 0) задаст диапазон для случайного числа в пределах от 15 до 20.
Класс Random и метод Next() нам будут необходимы для задания новой позиции на экране монитора в методе MoveSprite() класса Game1. Это новый метод, который добавляется в текущий проект и выглядит следующим образом:
public void MoveSprite()
{
sprite.spritePosition += sprite.speedSprite;
if (sprite.spritePosition.Y > Window.ClientBounds.Height)
{
sprite.spritePosition = new Vector2(rand.Next(10,
Window.ClientBounds.Width-30 0-sprite.spriteTexture.Width/12),-2 0 0);
}
}
В первой строке кода метода MoveSprite() мы изменяем позицию объекта по оси Y, а значит, перемещаем спрайт на экране сверху вниз. Если развернуть эту строку записи (чтобы вам было понятно), то исходный код движения спрайта будет выглядеть следующим образом:
sprite.spritePosition.X += sprite.speedSprite.X; // где скорость по X равна 0 sprite.spritePosition.Y += sprite.speedSprite.Y; // где скорость по Y равна 6
Такая запись также может иметь место в исходном коде метода MoveSprite(), но представленный первый вариант несколько профессиональнее и быстрее работает.
Оставшиеся три строки кода метода MoveSprite() обрабатывают ситуацию выхода спрайта за пределы экрана с нижней стороны дисплея. Как только позиция спрайта оказывается больше, чем максимальный размер высоты экрана, то в исходном коде метода MoveSprite() происходит вход в конструкцию if/ else , где определяется новая точка вывода спрайта на экран.
116 Движение спрайтов в пространстве
Проект MoveSpriteArray 117
sprite.spritePosition = new Vector2(rand.Next(10,
Window.ClientBounds.Width-30 0-sprite.spriteTexture.Width/12),-2 0 0);
Здесь мы используем метод Next(), с помощью которого при определении координаты по оси X задаем случайное значение в диапазоне от 10 пикселей до Window.ClientBounds.Width — 3 0 0-sprite.spriteTexture.Width/12 или в числовом эквиваленте 1024—300-один фрейм анимационной последовательности пикселей, что позволяет нам при каждом новом определении значения точки вывода спрайта на экран по оси X задавать новое значение в пределах видимой области рамки фона.
С выбором случайных значений для новой позиции спрайта игрок не будет знать, в каком месте должен выводиться спрайт на экран, и впоследствии не сможет приспособиться к вашей игре. Новое место будет всегда неожиданным как для игрока, так, собственно, и для вас, потому что используется метод Next() с двумя параметрами, задающими определенный диапазон значений. Дополнительные 300 пикселей, которые мы отняли от ширины дисплея, отводятся на информационную рамку игры, а также мы отнимаем ширину одного фрейма, дабы спрайт не заходил за саму рамку. Предыдущая Следующая
|