Предыдущая Следующая
private ModelClass [] ball = new ModelClass[3]; MouseState mouseState; Random rand = new Random();
Попутно происходит объявление еще двух объектов: mouseState и rand. Первый объект mouseState необходим для работы с мышью, а второй объект rand позволит в программе генерировать случайные числа. В двухмерной игре, как вы помните, мы также применяли эти объекты.
Далее в конструкторе класса Game1 происходит создание массива объектов ball при помощи цикла for.
for (int i = 0; ball.Length > i;
{
ball[i] = new ModelClass();
}
19.3. Инициализация и установка моделей на позиции
Теперь переходим к методу LoadGraphicsContent() , который отвечает за загрузку в игру различных графических данных.
protected override void LoadGraphicsContent(bool loadAllContent)
{
if (loadAllContent)
{
ball[0].Load(content, "Content\\Models\\Soccerball");
ball[1].Load(content, "Content\\Models\\SoccerballGreen");
ball[2].Load(content, "Content\\Models\\SoccerballRed");
for(int i = 0; ball.Length > i;
{
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));
} }
}
Модель мячика, взятая с сайта Turbosquid.com, изначально имеет только два цвета - серый и синий. Чтобы разнообразить игру, я покрасил средствами 3ds Max шашки синего цвета в зеленый и красный цвета. Таким образом, у нас теперь имеется три разных мячика с тремя разными цветами и тремя разными названиями.
□ Мячик Soccerball - это базовая модель с синими шашками.
□ Мячик SoccerballGreen - эта модель с зелеными шашками.
□ Мячик SoccerballRed - этот мяч имеет красные шашки.
В исходном коде метода LoadGraphicsContent() с помощью цикла for и метода rand.Next() генерируются случайные координаты в пространстве по всем трем осям для вывода мячей на игровые позиции. В этом блоке кода вас может заинтересовать выбор позиции по оси X.
ball[i].position.X = rand.Next(-(rand.Next(0, 80)), rand.Next(0, 80));
Дело в том, что метод rand.Next() может генерировать только положительные числа, но нам необходимо иметь еще и отрицательные значения. Как мы помним, каждая модель в пространстве наделяется своей собственной локальной системой координат, где нулевая точка отсчета модели находится в центре экрана (при нулевых значениях координат по осям X и Y для точки просмотра сцены). Это значит, что движение модели в левую сторону - это движение модели в отрицательной плоскости оси X. Движение модели в правую сторону - это движение в положительной части оси Х. По оси Y для движения вверх нужно выбирать положительные значения, а для движения вниз - отрицательные. Предыдущая Следующая
|