LookAtModifier3D
Успадковує: SkeletonModifier3D < Node3D < Node < Object
LookAtModifier3D повертає кістку, щоб дивитися на ціль.
Опис
Цей SkeletonModifier3D повертає кістку, щоб дивитися на ціль. Це корисно для руху голови персонажа, щоб дивитися на гравця, обертання вежі, щоб дивитися на ціль, або в будь-якому іншому випадку, коли ви хочете швидко й легко повернути кістку до чогось.
У разі застосування кількох LookAtModifier3D, LookAtModifier3D, призначений батьківській кістці, має бути розміщений у списку над LookAtModifier3D, призначеним дочірній кістці, щоб результати для дочірньої кістки були правильними.
Властивості
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
Методи
get_interpolation_remaining() const |
|
is_interpolating() const |
|
is_target_within_limitation() const |
Переліки
enum OriginFrom: 🔗
OriginFrom ORIGIN_FROM_SELF = 0
Позиція спокою кістки, указана в bone, використовується як вихідна точка.
OriginFrom ORIGIN_FROM_SPECIFIC_BONE = 1
Глобальне положення позиції кістки, указане в origin_bone, використовується як джерело.
Примітка: Рекомендується вибирати лише вихідну кістку, якщо ви не знайомі з процесом обробки кістки. Зазначена поза кістки під час обробки LookAtModifier3D використовується як еталон. Іншими словами, якщо ви вкажете дочірню кістку, а LookAtModifier3D змушує дочірню кістку рухатися, відтворений результат і напрямок не збігатимуться.
OriginFrom ORIGIN_FROM_EXTERNAL_NODE = 2
Глобальна позиція Node3D, указана в origin_external_node, використовується як джерело.
Примітка: Так само, як ORIGIN_FROM_SPECIFIC_BONE, якщо вказати BoneAttachment3D із призначеною дочірньою кісткою, відтворений результат і напрямок не збігатимуться.
Описи властивостей
Індекс bone_name у батьківському Skeleton3D.
Назва кістки Skeleton3D, на якій працюватиме модифікація.
Тривалість інтерполяції на основі часу. Інтерполяція запускається в таких випадках:
Коли цільовий вузол змінено
Коли вісь перевернуто через обмеження кута
Примітка. Переворот відбувається, коли ціль знаходиться за межами обмеження кута, а внутрішньо обчислена вторинна вісь обертання вектора вперед перевертається. Візуально це відбувається, коли ціль знаходиться за межами обмеження кута та перетинає площину forward_axis і primary_rotation_axis.
Тип простоти інтерполяції на основі часу. Дивіться також EaseType.
Передня вісь кістки. Цей SkeletonModifier3D модифікує кістку так, щоб ця вісь вказувала на target_node.
Індекс origin_bone_name у батьківському Skeleton3D.
Якщо origin_from дорівнює ORIGIN_FROM_SPECIFIC_BONE, загальна позиція кістки, указана для цього, використовується як джерело.
NodePath origin_external_node 🔗
Якщо origin_from є ORIGIN_FROM_EXTERNAL_NODE, глобальна позиція Node3D, указана для цього, використовується як джерело.
OriginFrom origin_from = 0 🔗
void set_origin_from(value: OriginFrom)
OriginFrom get_origin_from()
Це значення визначає, з якого джерела буде отримано для використання в обчисленні прямого вектора.
Vector3 origin_offset = Vector3(0, 0, 0) 🔗
Зсув походження пози кістки. Зіставлення початків за зсувом корисно у випадках, коли кілька кісток завжди мають бути спрямовані в одному напрямку, наприклад очі.
Примітка: це значення вказує на локальне положення об’єкта, встановленого в origin_from.
float origin_safe_margin = 0.1 🔗
Якщо ціль проходить занадто близько до початку координат, ніж це значення, використовується інтерполяція на основі часу, навіть якщо ціль знаходиться в межах кутових обмежень, щоб запобігти тому, щоб кутова швидкість стала занадто високою.
float primary_damp_threshold 🔗
Порогове значення для початку демпфування для primary_limit_angle. Він забезпечує нелінійну (b-сплайн) інтерполяцію, нехай він відчуває більший опір, чим більше він повертається до межі краю. Це корисно для імітації обмежень руху людини.
Якщо 1.0, демпфування не виконується. Якщо 0.0, демпфування виконується завжди.
Граничний кут первинного повороту, коли symmetry_limitation має значення true.
float primary_negative_damp_threshold 🔗
Поріг для початку демпфування для primary_negative_limit_angle.
float primary_negative_limit_angle 🔗
Граничний кут негативної сторони первинного обертання, коли symmetry_limiting дорівнює false.
float primary_positive_damp_threshold 🔗
Поріг для початку демпфування для primary_positive_limit_angle.
float primary_positive_limit_angle 🔗
Граничний кут позитивної сторони первинного обертання, коли symmetry_limiting дорівнює false.
Axis primary_rotation_axis = 1 🔗
Вісь першого повороту. Цей SkeletonModifier3D працює, об’єднуючи обертання за кутами Ейлера, щоб запобігти обертанню forward_axis.
float secondary_damp_threshold 🔗
Порогове значення для початку демпфування для secondary_limit_angle.
Граничний кут вторинного обертання, коли symmetry_limitation має значення true.
float secondary_negative_damp_threshold 🔗
void set_secondary_negative_damp_threshold(value: float)
float get_secondary_negative_damp_threshold()
Порогове значення для початку демпфування для secondary_negative_limit_angle.
float secondary_negative_limit_angle 🔗
Граничний кут негативної сторони вторинного обертання, коли symmetry_limiting дорівнює false.
float secondary_positive_damp_threshold 🔗
void set_secondary_positive_damp_threshold(value: float)
float get_secondary_positive_damp_threshold()
Порогове значення для початку демпфування для secondary_positive_limit_angle.
float secondary_positive_limit_angle 🔗
Граничний кут позитивної сторони вторинного обертання, коли symmetry_limiting дорівнює false.
Якщо true, обмеження поширюються від кістки симетрично.
Якщо false, обмеження можна вказати окремо для кожної сторони опори для кістки.
NodePath target_node = NodePath("") 🔗
NodePath до вузла, який є метою перегляду модифікації. Цей вузол є тим, до чого модифікація повертатиме кістку.
TransitionType transition_type = 0 🔗
void set_transition_type(value: TransitionType)
TransitionType get_transition_type()
Тип переходу інтерполяції на основі часу. Дивіться також TransitionType.
bool use_angle_limitation = false 🔗
Якщо true, обмежує величину обертання. Наприклад, це допомагає запобігти обертанню шиї персонажа на 360 градусів.
Примітка: Як і у випадку зі змішуванням AnimationTree, передбачено інтерполяцію, яка надає перевагу Skeleton3D.get_bone_rest(). Це означає, що інтерполяція в деяких випадках не вибирає найкоротший шлях.
Примітка: Деякі значення для transition_type (такі як Tween.TRANS_BACK, Tween.TRANS_ELASTIC та Tween.TRANS_SPRING) можуть перевищувати обмеження. Якщо інтерполяція відбувається з перевищенням обмежень, результат може не враховувати залишок кістки.
bool use_secondary_rotation = true 🔗
Якщо true, забезпечує обертання за двома осями.
Описи методів
float get_interpolation_remaining() const 🔗
Повертає решту секунд інтерполяції на основі часу.
bool is_interpolating() const 🔗
Повертає true, якщо виконується інтерполяція на основі часу. Якщо true, це еквівалентно тому, як get_interpolation_remaining() повертає 0.0.
Це корисно для визначення, чи можна безпечно видалити LookAtModifier3D.
bool is_target_within_limitation() const 🔗
Повертає, чи знаходиться ціль у межах кутових обмежень. Це корисно для скасування target_node, коли ціль знаходиться за межами кутових обмежень.
Примітка: значення оновлюється після SkeletonModifier3D._process_modification(). Щоб правильно отримати це значення, ми рекомендуємо використовувати сигнал SkeletonModifier3D.modification_processed.