Хонич А.
Как самому создать трехмерную игру
стр. 187

Здесь вам должно Ьыть все ясно. Основным гвоздем здесь является функция MoveThingTo, которая, собственно, и перемещает объект на новые координаты. Эта функция не сложная, но громоздкая. Поэтом}' исходный текст ее приводить здесь ие будем, но тем не менее объясним, что она делает. Первым делом вызывается функция, которая, анализируя путь, заполняет структуры STEP аналогично тому, как мы это разобрали при описании функции PressUse. Затем, в соответствии с накопленной информацией о линиях, составляется таблица специальных линий, которые пересек объект. Одновременно проверяются линии или объекты, которые могли бы служить препятствием на пути следования объекта. И, если таковые имеются, то устанавливается глобальная переменная MoveThing в 1, а в глобальную переменную TouchLine записывается указатель на линию, которая послужила препятствием (или в переменную TouchThing записывается указатель иа объект, если препятствием стал объект). В самом конце функции, если препятствий обнаружено не было, проверяется массив специальных линий (если таковые встретились на пути следования объекта), и для каждой линии вызывается функция SpecLine WalkAccrossLine, которая производит определенные действия в соответствии с типом линии. Если было обнаружено препятствие, то функция MoveThingTo возвращает 0. В противном случае она возвращает 1.

Функция SlideTraverse.

А теперь поговорим о том, зачем нужна функция SlideTraverse. Замечали ли вы при игре в DOOM, что, если вы упираетесь в какую-либо стену' не под прямым углом, то скользите вдоль этой стены. Наверняка замечали, но не придавали этому значения, т.к. это кажется естественным. Именно этим скольжением и занимается функция SlideTraverse. Она вызывается только для игроков. Если же монстры встретятся со стеной (независимо от угла), то они меняют направление перемещения. Как работает функция SlideTraverse? Если вектор перемещения игрока пересекается со стеной под прямым углом, то перемещения ие будет и игрок останется стоять там, где он встретил препятствие. Если же угол между вектором перемещения и линией препятствия не прямой, то объект скользит вдоль линии препятствия. При этом направление скольжения зависит от знака разности угла пересечения и угла 90 градусов. А скорость скольжения прямо пропорциональна абсолютному значению этой разности.

Новости
Авторы проекта «1917» выпустили онлайн-игру об истории СССР
Разработчики рассказали о том, что пользователи их игры смогут принять участие в главных исторических событиях советского периода.
В God of War не будет сезонного пропуска
Креативный директор студии SIE Santa Monica Studio Кори Барлог заявил, что в новой части God of War не будет сезонного пропуска.