Полную привякзу кисти определяют две переменные: Actor(Movement).Location и Actor.PrePivot;
Первая переменная: PrePivot отвечает за смещение точки привязки относительно центральной точки объекта, масштабирование и повороты. Она скрыта от пользователя и изменение ее значения возможно только из редактора. Но если подправить в скрипте для класса Actor строчку:
var vector PrePivot; // Offset from box center for drawing.на
var(Movement) vector PrePivot; // Offset from box center for drawing,то после этой манипуляции, откомпилировав всё, вы получите возможность управлять этой важной точкой не только мышью, но и в default-свойствах объекта вручную. Почему выбран раздел Movement? Да потому, что там находятся Location и Rotation обьекта.
Как оказалось эта манипуляция – не такая уж тривиальная задача особенно в UnrealEd2, поэтому ниже я по шагам описываю порядок действий:Точка привязки - своя для каждой кисти или персонажа. Она определяет также текущий центр масштабирования и поворота. На угол поворота влияния не оказывает. Точка привязки может находиться в центре каркаса (отдельная точка), вне каркаса или на любой его вершине.
Далее package – это модуль. Модули могут быть текстурными, системными/скриптовыми, звуковыми или с музыкой (карта – тоже модуль). Соответственно каждый из типов лежит в своём каталоге и обслуживается своим браузером. Что впрочем не мешает в один модуль напихать всё и сразу. :)После открывайте редактор и для любого класса порождённого от Actor в default-свойствах в разделе Movement будет доступен вектор PrePivot.
- Сделайте копию файла Engine.u !!!
- Откройте редактор.
- В текстурном браузере загрузите модуль с текстурами: LadrStatic.utx. Он требуется для компиляции.
- В том же текстурном браузере загрузите модуль Engine.u из каталога System.
- В браузере скриптов откройте(загрузите) через меню Open Package... всё тот же модуль Engine.u из каталога System.
- Откройте скрипт для класса Actor и сделайте изменения.
- Запустите компиляцию.
- По успешному окончанию компиляции, в окне браузера скриптов в меню View включите Show Packages, должно раскрыться подокно со списком текущих модулей. Выберите Engine и сохраните.
- Закройте редактор.
- Расслабтесь. :)
Ложка дёгтя: После всех этих манипуляций Engine.u станет тоньше на семь с небольшим килобайт, что говорит о небольшой потере информации. Поэтому при возникновении глюков с UT надо помнить о копии Engine.u.
Вторая ложка дёгтя: При пропатчивании файла Engine.u операцию надо повторять.
Ну и совсем мелочь: Проверялось на чистом UT с пачтем 420, ну и на всём, что было раньше этого. Впрочем при других вариантах могут возникнуть только проблемы с компиляцией, а именно могут возникнуть ошибки при попытке откомпилировать ссылки на незагруженные модули (вот собственно почему надо было грузить LadrStatic.utx).
Вторая переменная: Movement.Location - положение PrePivot в мире, т.е. текущие координаты точки привязки (X,Y,Z). При изменении координат точка привязки смещается и двигает за собой кисть.
Редактирование мышью:
В редакторе поставить точку привязки на грань абсолютно точно не получается. Возможно следующее:
Что это даёт? Это позволяет стыковать кисти на уровне более точно, а следовательно избегать или даже избавляться от некоторых глюков геометрии.
Немного эпическое название получилось, но тем не менее суть не меняется. Для муверов точка PrePivot – одна из самых важных, если не важнейших. Именно её движение и повороты определяются в ключах. Вот об этих самых ключах я и хотел бы сказать пару слов.
Всё в том же Engine.u живёт скрипт для класса Mover. В нём определяются массивы ключей:
var vector KeyPos[8];Так вот в свете вышесказанного надо исправить это на:
var rotator KeyRot[8];
var() vector KeyPos[8];Именно сразу после исправления скрипта для Actor исправьте и скрипт для Mover, а затем компилируйте. KeyPos и KeyRot лягут в раздел Mover. Если это не очень удобно, то при исправлении надо укзать в скобках как будет называться раздел, куда вы хотите их поместить.
var() rotator KeyRot[8];
Поверьте мне, руками поставить мувер в нужное
место и с нужным поворотом гораздо проще, чем мышью, да и точнее будет! Только
не забывайте изменять значение NumKeys при изменении количества ключевых
точек.