Attention: Here be dragons
This is the latest
(unstable) version of this documentation, which may document features
not available in or compatible with released stable versions of Godot.
Checking the stable version of the documentation...
SkeletonModification2DCCDIK
Экспериментальное: This class may be changed or removed in future versions.
Наследует: SkeletonModification2D < Resource < RefCounted < Object
Модификация, использующая CCDIK для манипулирования серией костей с целью достижения цели в 2D.
Описание
Этот SkeletonModification2D использует алгоритм, называемый Обратная кинематика циклического спуска по координатам (CCDIK), для управления цепочкой костей в Skeleton2D так, чтобы она достигла определенной цели.
CCDIK работает, вращая набор костей, обычно называемый «цепочкой костей», вокруг одной оси. Каждая кость поворачивается так, чтобы быть обращенной к цели с кончика (по умолчанию), что позволяет ей вращаться правильно, достигая цели, через цепочку костей. Поскольку кости вращаются только вокруг одной оси, CCDIK может выглядеть более роботизированным, чем другие решатели IK.
Примечание: Модификатор CCDIK имеет ccdik_joints, которые являются объектами данных, которые содержат данные для каждого сустава в цепочке CCDIK. Это отличается от кости! Суставы CCDIK содержат данные, необходимые для каждой кости в цепочке костей, используемой CCDIK.
CCDIK также полностью поддерживает угловые ограничения, что позволяет лучше контролировать выполнение решения.
Свойства
|
||
|
||
|
Методы
get_ccdik_joint_bone2d_node(joint_idx: int) const |
|
get_ccdik_joint_bone_index(joint_idx: int) const |
|
get_ccdik_joint_constraint_angle_invert(joint_idx: int) const |
|
get_ccdik_joint_constraint_angle_max(joint_idx: int) const |
|
get_ccdik_joint_constraint_angle_min(joint_idx: int) const |
|
get_ccdik_joint_enable_constraint(joint_idx: int) const |
|
get_ccdik_joint_rotate_from_joint(joint_idx: int) const |
|
void |
set_ccdik_joint_bone2d_node(joint_idx: int, bone2d_nodepath: NodePath) |
void |
set_ccdik_joint_bone_index(joint_idx: int, bone_idx: int) |
void |
set_ccdik_joint_constraint_angle_invert(joint_idx: int, invert: bool) |
void |
set_ccdik_joint_constraint_angle_max(joint_idx: int, angle_max: float) |
void |
set_ccdik_joint_constraint_angle_min(joint_idx: int, angle_min: float) |
void |
set_ccdik_joint_enable_constraint(joint_idx: int, enable_constraint: bool) |
void |
set_ccdik_joint_rotate_from_joint(joint_idx: int, rotate_from_joint: bool) |
Описания свойств
int ccdik_data_chain_length = 0 🔗
Количество соединений CCDIK в модификации CCDIK.
NodePath target_nodepath = NodePath("") 🔗
NodePath к узлу, который является целью модификации CCDIK. Это узел, к которому цепь CCDIK попытается повернуть цепочку костей.
NodePath tip_nodepath = NodePath("") 🔗
Конечная позиция цепочки CCDIK. Обычно это должен быть дочерний узел Bone2D, прикрепленный к конечному Bone2D в цепочке CCDIK.
Описания метода
NodePath get_ccdik_joint_bone2d_node(joint_idx: int) const 🔗
Возвращает узел Bone2D, назначенный суставу CCDIK в joint_idx.
int get_ccdik_joint_bone_index(joint_idx: int) const 🔗
Возвращает индекс узла Bone2D, назначенного суставу CCDIK в joint_idx.
bool get_ccdik_joint_constraint_angle_invert(joint_idx: int) const 🔗
Возвращает, использует ли соединение CCDIK в joint_idx инвертированное ограничение соединения. Подробности см. в set_ccdik_joint_constraint_angle_invert().
float get_ccdik_joint_constraint_angle_max(joint_idx: int) const 🔗
Возвращает максимальное ограничение угла для сочленения в joint_idx.
float get_ccdik_joint_constraint_angle_min(joint_idx: int) const 🔗
Возвращает минимальное ограничение угла для сочленения в joint_idx.
bool get_ccdik_joint_enable_constraint(joint_idx: int) const 🔗
Возвращает информацию о том, включены ли ограничения угла для соединения CCDIK в joint_idx.
bool get_ccdik_joint_rotate_from_joint(joint_idx: int) const 🔗
Возвращает, установлено ли соединение в joint_idx для вращения от сочленения, true, или для вращения от кончика, false. По умолчанию вращение происходит от кончика.
void set_ccdik_joint_bone2d_node(joint_idx: int, bone2d_nodepath: NodePath) 🔗
Устанавливает узел Bone2D, назначенный суставу CCDIK в joint_idx.
void set_ccdik_joint_bone_index(joint_idx: int, bone_idx: int) 🔗
Устанавливает индекс кости bone_idx сустава CCDIK в joint_idx. Когда это возможно, это также обновит bone2d_node сустава CCDIK на основе данных, предоставленных связанным скелетом.
void set_ccdik_joint_constraint_angle_invert(joint_idx: int, invert: bool) 🔗
Устанавливает, использует ли соединение CCDIK в joint_idx инвертированное ограничение соединения.
Инвертированное ограничение соединения ограничивает соединение CCDIK только углами вне введенных минимальных и максимальных углов. По этой причине оно называется инвертированным ограничением соединения, так как оно ограничивает соединение снаружи введенных значений.
void set_ccdik_joint_constraint_angle_max(joint_idx: int, angle_max: float) 🔗
Устанавливает максимальное ограничение угла для сочленения в joint_idx.
void set_ccdik_joint_constraint_angle_min(joint_idx: int, angle_min: float) 🔗
Устанавливает минимальное ограничение угла для сочленения в joint_idx.
void set_ccdik_joint_enable_constraint(joint_idx: int, enable_constraint: bool) 🔗
Определяет, включены ли ограничения угла на сочленении CCDIK в joint_idx. Когда true, ограничения будут включены и учтены при решении.
void set_ccdik_joint_rotate_from_joint(joint_idx: int, rotate_from_joint: bool) 🔗
Устанавливает, будет ли сочленение в joint_idx настроено на вращение от сочленения, true, или на вращение от кончика, false.