Приветствуем Вас в мире Blitz3D и приглашаем посетить наш обновленный ресурс посвященный программированию и созданию небольших . Интересная статья о том, как создать компьютерную игру: .
Этого недостаточно для полноценной игры. Если бы мы допустим захотели бы чтобы главный герой мог копать землю. То просто мы этого физически не смогли сделать - не хватило бы средств движка. Но эту идею (случайную генерацию карты) можно было бы осуществить с помощью Blitz. D. В чем суть генерации карты. Вот смотрите. Есть также координаты всех его точек.
Теперь нам нужно автоматически с генерировать кусок карты так, чтобы герой остался стоять на ней. Для этого боем координаты нижних его точек. Заносим в массив . Далее программа должна рассчитать размер генерируемого фрагмента карты. Для этого она должна учесть текущий наклон игрока относительно плоскости XOY.
Причем карта должна генерироваться автоматически. То есть с помощью Rand. То есть оператора дающий возможности случайного создания карт. При все этом карта - не просто геометрическая модель, а модель, полигоны которой состоят из точек. Также размер полигона должен определяться случайно с помощью массива. Количество точек из которых состоит полигон, который будут сгенерирован сейчас будет случайным.
Ямы в поверхности. Также количество его точек. Например, нужно сделать возможность игроку копать поверхность.
Для этого нужно просто заменить какой- то полигоy несколькими полигонами, причем, учитывая: место в котором игрок быдло копатьвысота ямы. Метод: end & repeat (ER). Первый из которых - Xcoordinates, второй - Ycoordinates, третий - Zcoordinates. Зачем нужны эти три массива и как с ними работать?
Сначала вспомним о том, что массив - это очень ценная вещь в руках программиста. Также следует сказать о том, что массив может хранить неограниченное кол- во элементов.
И это пригодится нам в создании своего генератора ландшафтов. Ну, что ж, начнем! Сначала объявим массивы с количеством элементов равным 1.
Далее заполнив массив Zcoordinates случайными значениями, следуя такой логике: Пока переменная, хранящая текущий элемент массива не равна числу, большим на единицу, максимального элемента массива. Метод: move some point (MSP). Та физика, которую предоставляют обычно игровые движки довольно примитивная. Вспомните, например, объект с типом физики dinamic. Это просто ужас! Физика просто этого типа мало интересная и используется в таких играх, как Catch cube 4.
Потому, что поверхность плоская. И еще игроки же кубики. И в принципи и слабой физике достаточно.
Все нормально выглядит. Зачем тратить оперативную память на просчет полноценной физики? Вернемся к программированию физики. Каждый объект должен обладать следующими свойствами физике в игре: возможность упасть при столкновениивозможность поворачиваться, но не падать, если какой- то объект сильно, но медленно давит на игрока со сторонывозможность гравитации. Если этот объект не игрок, а просто, например, коробка, кровать, шкаф, то объект должен обладать такими свойствами, как: Возможность: гравитацииповорота объекта в зависимости от давления других объектов на неговозможность изменить форму в зависимости от количества объектов давящих на него. Если это дверь у дома: Возможность: гравитацииповорота объекта в зависимости от давления других объектов на него. В игре гравитация имеет более точное понятие чем в жизни.
В игре, как правило, присутствует гравитация из- за холмов на местности или ям в ней. Гравитация в игре - это смещение объекта по оси Z через заданные промежутки времени до тех пор пока выполняется условие: координаты точек объекта не равны координатам точек другого(их) объектов. А это означает, что объект будет падать до тех пор, пока не упадет на какой- то другой объект. Но гравитации не совсем достатоно в игре. Так например, если есть куб и наклонная плоскость под ним. Если бы была только гравитация, то куб упал на плоскость и остался на месте потому, что он коснулся объекта. Программаторы На Max232. А что же тогда можно было сделать в этой ситуации?
Можно было бы составить программу, работающую по следующему принципу: Есть четыре вершины нижнего полигона куба: A,B, C, D. A равны координатам плоскости, то сместить куб на 1 по глобальной оси X.