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

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

Функция SlideTraverse.

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

Новости
Авторы Kingdom Come: «Мы хотели сделать Red Dead Redemption с мечами»
Не причислять себя к традиционным инди-разработчикам, а пытаться создать игру, сравнимую с Red Dead, Far Cry, «Ведьмаком», Assassin’s Creed и The Elder Scrolls V: Skyrim.
VR-игра по мотивам Psychonauts добралась до ПК
На ПК вышла VR-игра от легендарного Тима Шейфера: теперь в Psychonauts in the Rhombus of Ruin могут сыграть не только владельцы PS VR, но и обладатели HTC Vive или Oculus Rift.