×
Menu

Velocity

 
Несколько подробнее об этом параметре.
 
Какие функции выполняет в ниф файле, без относительно движка МВ - не известно.
Возможно существует именно для создания итеративности?
В старших версиях Ниф файлов - отсутствует.
 
Примечание.
Velocity может быть использован в МВСЕ 2.1->.
Здесь это отдельная команда позволяющая управлять ускорением ГГ и НПС.
Т.е. можно создавать лыжи, разлет НПС от  взрыва и прочее, без необходимости менять модели.
При этом, все происходит интерактивно и в любых направлениях.

Работает только с корневой нодой ниф файла.
Не работает во вложенных узлах и шейпах, даже если последние назначены корнем файла.
Не работает на RootCollisionNode, или BoundBox т.к. оные являются вложенными нодами.
 
Работает по глобальным координатам игры!
Т.е. в ниф файле задается вектор "пинка", но куда полетит игрок зависит от положения модели в игре.
Это следует учитывать при размещении объекта в игре.
 
XYZ
могут работать сразу все три направления.
Значение задает силу ускорения, чем больше тем сильнее.
 
Имеет смысл проверять флаг детектирования коллизий на ноде - не должен быть 0.
Также, обязательно требуется шейп, т.к. поверхность по которой будет происходить скольжение.
Т.е. корневая нода должна иметь поверхность по которой будет работать скольжение.
 
Примечание.
Можно делать "пушку", или трамплин, т.е. игрок, или существо могут получить столь существенное ускорение, что мгновенно пролетят через пол карты.
Можно создавать прыжковые поверхности, но работают они плохо.
Т.е. красивого прыжка, как в Крутом Сэме получить не получится, но подбросить игрока вверх - возможно.
Но при возвращении обратно к поверхности, игрока будет подбрасывать обратно по тому же вектору...
Хотя если добавить небольшое смещение по ХY, или несколько наклонить поверхность - возможно получится сделать хорошую прыжковую площадку.
 
Не ясна дистанция реакции по оси Z, т.е. игрока начинает вновь подбрасывать до момента обратного касания поверхности!
Возможно зависит от параметра Radius в niTriShapeData.
Эффект ускорения может срабатывать на некотором, довольно значительном, удалении от самой поверхности.
Особенно заметно, в интерьерах, где "прыжковая" поверхность весит в пустоте.
Но если ниже оной поставить обычную поверхность, это может скомпенсировать эффект зацикленного "прыжка".
Игрок, окажется на полу.
 
Можно создавать лед, или некую вязкую поверхность посредством установки нескольких небольших поверхностей с разнонаправленным вектором действия.
Однако с видом от 3-его лица, будет подергивания анимации.
 
Можно создавать эскалаторы и пр. что будет перемещать игрока вверх, или вниз по очень крутому скату.
Возможно объект не должен быть очень длинным, иначе игрок остановится где-то посередине, впрочем при малейшем движении игрока, перемещение продолжиться.
Обратите внимание, в помещениях следует избегать острых углов - т.к. при переходе с поверхности на поверхность другого вектора, игрок будет занимать самую крайнюю позицию, т.е. будет скользить в притык к стене.
Если планируется ловушка, это может быть критично.
 
Вероятно можно создать трубу, где игрока будет забрасывать на потолок по спирали... Быстрая проверка выявила необходимость большого радиуса (->1024) и высокого уровня сглаживания.
Игрок поднялся выше середины трубы и уперся в грань полигона. Так что, полетать по потолку, может не получиться.
Тем более, что игрока НЕ перевернет к верху ногами.
Ориентация по оси Z глобальна и полностью игнорирует любые локальные поверхности.
 
Примечание.
Можно делать горки для катания, в т.ч. вероятно и "американские".
 
Не работает с предметами, только с НПС, существами и игроком.
 
Возможно полезно использовать в лифтах, добавляя небольшое смещение +Z.
Хотя все равно, работает это только когда объект (лифт) в кадре.
 
Вероятно, Velocity может использоваться движком игры для перемещения игрока в воде.
Т.е. когда игрок перестает плыть, можно заметить, как его начинает сносить течением.
 
Возможно, действие Velocity можно видеть при кончине НПС, или существ, когда их "уносит" в сторону.
 
Примечание.
Изменение параметра Velocity можно наблюдать в SSG.
Т.е. вызвать в редакторе по F10 СкенеГраф и осмотреть в нем модель.
При этом, меняются значения Velocity для всех шейпов и нод объекта.
И local и world.
 
Примечание.
Взято из переписки на одном форуме.
Да, если в одну сторону по ней идешь - ускоряет.
В другую - замедляет.
В нифе задается вектор ускорения по осям ХYZ, но в игре, персонажа, будет сносить не в зависимости от поворота модели, а по глобальному направлению ХY в локации .
Т.е. что б создать некий лабиринт, из нескольких коридоров, нужно создать несколько разных моделей с разными направлениями Velocity. В одном -Х, в другом Х, в третьем Y и -Y в четвертом.
Банальным поворотом одной модели этого не получить. Игрока будет сносить по прежнему вектору.
Ось Z вроде всегда стабильна, будет подбрасывать вверх. Либо наоборот.
 
От чего эта штука хороша для водных потоков, текущих в узком месте.
Но вот создать лед, будет проблемно.
Разве что, если сделать много маленьких фрагментов, с разными векторами.
Игрока (или существо) будет перебрасывать с одного на другой, что даст подобие эффекта скольжения.
Увы, градиента торможения нету(
 

Из Gamebryo 1.1.справки.
Не факт, но возможно, что здесь речь именно о работе Velocity.
The collision normals for box vs. box intersection are calculated from summing the projections of a box's center-to-intersection vector onto the other box's axes.  Velocity is taken in indirectly by the fact that the intersection point was calculated after backtracking to the earliest collision. If the box centers are coincident and the velocity is zero, then the unit Z vector is returned. A normalized center-to-intersection point vector will be returned as the collision normal if for some reason the calculation of the normal had resulted in a zero vector.