LookAtModifier3D

Успадковує: SkeletonModifier3D < Node3D < Node < Object

LookAtModifier3D повертає кістку, щоб дивитися на ціль.

Опис

Цей SkeletonModifier3D повертає кістку, щоб дивитися на ціль. Це корисно для руху голови персонажа, щоб дивитися на гравця, обертання вежі, щоб дивитися на ціль, або в будь-якому іншому випадку, коли ви хочете швидко й легко повернути кістку до чогось.

У разі застосування кількох LookAtModifier3D, LookAtModifier3D, призначений батьківській кістці, має бути розміщений у списку над LookAtModifier3D, призначеним дочірній кістці, щоб результати для дочірньої кістки були правильними.

Властивості

int

bone

-1

String

bone_name

""

float

duration

0.0

EaseType

ease_type

0

BoneAxis

forward_axis

4

int

origin_bone

String

origin_bone_name

NodePath

origin_external_node

OriginFrom

origin_from

0

Vector3

origin_offset

Vector3(0, 0, 0)

float

origin_safe_margin

0.1

float

primary_damp_threshold

float

primary_limit_angle

float

primary_negative_damp_threshold

float

primary_negative_limit_angle

float

primary_positive_damp_threshold

float

primary_positive_limit_angle

Axis

primary_rotation_axis

1

float

secondary_damp_threshold

float

secondary_limit_angle

float

secondary_negative_damp_threshold

float

secondary_negative_limit_angle

float

secondary_positive_damp_threshold

float

secondary_positive_limit_angle

bool

symmetry_limitation

NodePath

target_node

NodePath("")

TransitionType

transition_type

0

bool

use_angle_limitation

false

bool

use_secondary_rotation

true

Методи

float

get_interpolation_remaining() const

bool

is_interpolating() const

bool

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 із призначеною дочірньою кісткою, відтворений результат і напрямок не збігатимуться.


Описи властивостей

int bone = -1 🔗

  • void set_bone(value: int)

  • int get_bone()

Індекс bone_name у батьківському Skeleton3D.


String bone_name = "" 🔗

Назва кістки Skeleton3D, на якій працюватиме модифікація.


float duration = 0.0 🔗

  • void set_duration(value: float)

  • float get_duration()

Тривалість інтерполяції на основі часу. Інтерполяція запускається в таких випадках:

  • Коли цільовий вузол змінено

  • Коли вісь перевернуто через обмеження кута

Примітка. Переворот відбувається, коли ціль знаходиться за межами обмеження кута, а внутрішньо обчислена вторинна вісь обертання вектора вперед перевертається. Візуально це відбувається, коли ціль знаходиться за межами обмеження кута та перетинає площину forward_axis і primary_rotation_axis.


EaseType ease_type = 0 🔗

Тип простоти інтерполяції на основі часу. Дивіться також EaseType.


BoneAxis forward_axis = 4 🔗

Передня вісь кістки. Цей SkeletonModifier3D модифікує кістку так, щоб ця вісь вказувала на target_node.


int origin_bone 🔗

  • void set_origin_bone(value: int)

  • int get_origin_bone()

Індекс origin_bone_name у батьківському Skeleton3D.


String origin_bone_name 🔗

  • void set_origin_bone_name(value: String)

  • String get_origin_bone_name()

Якщо origin_from дорівнює ORIGIN_FROM_SPECIFIC_BONE, загальна позиція кістки, указана для цього, використовується як джерело.


NodePath origin_external_node 🔗

  • void set_origin_external_node(value: NodePath)

  • NodePath get_origin_external_node()

Якщо origin_from є ORIGIN_FROM_EXTERNAL_NODE, глобальна позиція Node3D, указана для цього, використовується як джерело.


OriginFrom origin_from = 0 🔗

Це значення визначає, з якого джерела буде отримано для використання в обчисленні прямого вектора.


Vector3 origin_offset = Vector3(0, 0, 0) 🔗

Зсув походження пози кістки. Зіставлення початків за зсувом корисно у випадках, коли кілька кісток завжди мають бути спрямовані в одному напрямку, наприклад очі.

Примітка: це значення вказує на локальне положення об’єкта, встановленого в origin_from.


float origin_safe_margin = 0.1 🔗

  • void set_origin_safe_margin(value: float)

  • float get_origin_safe_margin()

Якщо ціль проходить занадто близько до початку координат, ніж це значення, використовується інтерполяція на основі часу, навіть якщо ціль знаходиться в межах кутових обмежень, щоб запобігти тому, щоб кутова швидкість стала занадто високою.


float primary_damp_threshold 🔗

  • void set_primary_damp_threshold(value: float)

  • float get_primary_damp_threshold()

Порогове значення для початку демпфування для primary_limit_angle. Він забезпечує нелінійну (b-сплайн) інтерполяцію, нехай він відчуває більший опір, чим більше він повертається до межі краю. Це корисно для імітації обмежень руху людини.

Якщо 1.0, демпфування не виконується. Якщо 0.0, демпфування виконується завжди.


float primary_limit_angle 🔗

  • void set_primary_limit_angle(value: float)

  • float get_primary_limit_angle()

Граничний кут первинного повороту, коли symmetry_limitation має значення true.


float primary_negative_damp_threshold 🔗

  • void set_primary_negative_damp_threshold(value: float)

  • float get_primary_negative_damp_threshold()

Поріг для початку демпфування для primary_negative_limit_angle.


float primary_negative_limit_angle 🔗

  • void set_primary_negative_limit_angle(value: float)

  • float get_primary_negative_limit_angle()

Граничний кут негативної сторони первинного обертання, коли symmetry_limiting дорівнює false.


float primary_positive_damp_threshold 🔗

  • void set_primary_positive_damp_threshold(value: float)

  • float get_primary_positive_damp_threshold()

Поріг для початку демпфування для primary_positive_limit_angle.


float primary_positive_limit_angle 🔗

  • void set_primary_positive_limit_angle(value: float)

  • float get_primary_positive_limit_angle()

Граничний кут позитивної сторони первинного обертання, коли symmetry_limiting дорівнює false.


Axis primary_rotation_axis = 1 🔗

  • void set_primary_rotation_axis(value: Axis)

  • Axis get_primary_rotation_axis()

Вісь першого повороту. Цей SkeletonModifier3D працює, об’єднуючи обертання за кутами Ейлера, щоб запобігти обертанню forward_axis.


float secondary_damp_threshold 🔗

  • void set_secondary_damp_threshold(value: float)

  • float get_secondary_damp_threshold()

Порогове значення для початку демпфування для secondary_limit_angle.


float secondary_limit_angle 🔗

  • void set_secondary_limit_angle(value: float)

  • float get_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 🔗

  • void set_secondary_negative_limit_angle(value: float)

  • float get_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 🔗

  • void set_secondary_positive_limit_angle(value: float)

  • float get_secondary_positive_limit_angle()

Граничний кут позитивної сторони вторинного обертання, коли symmetry_limiting дорівнює false.


bool symmetry_limitation 🔗

  • void set_symmetry_limitation(value: bool)

  • bool is_limitation_symmetry()

Якщо true, обмеження поширюються від кістки симетрично.

Якщо false, обмеження можна вказати окремо для кожної сторони опори для кістки.


NodePath target_node = NodePath("") 🔗

NodePath до вузла, який є метою перегляду модифікації. Цей вузол є тим, до чого модифікація повертатиме кістку.


TransitionType transition_type = 0 🔗

Тип переходу інтерполяції на основі часу. Дивіться також TransitionType.


bool use_angle_limitation = false 🔗

  • void set_use_angle_limitation(value: bool)

  • bool is_using_angle_limitation()

Якщо true, обмежує величину обертання. Наприклад, це допомагає запобігти обертанню шиї персонажа на 360 градусів.

Примітка: Як і у випадку зі змішуванням AnimationTree, передбачено інтерполяцію, яка надає перевагу Skeleton3D.get_bone_rest(). Це означає, що інтерполяція в деяких випадках не вибирає найкоротший шлях.

Примітка: Деякі значення для transition_type (такі як Tween.TRANS_BACK, Tween.TRANS_ELASTIC та Tween.TRANS_SPRING) можуть перевищувати обмеження. Якщо інтерполяція відбувається з перевищенням обмежень, результат може не враховувати залишок кістки.


bool use_secondary_rotation = true 🔗

  • void set_use_secondary_rotation(value: bool)

  • bool is_using_secondary_rotation()

Якщо 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.