SkeletonModification2DTwoBoneIK

实验性: This class may be changed or removed in future versions.

继承: SkeletonModification2D < Resource < RefCounted < Object

这种修改器会让两个骨骼按照余弦定理进行旋转,最终抵达目标。

描述

这种 SkeletonModification2D 所使用的算法一般称之为 TwoBoneIK。这种算法的原理是利用余弦定理和骨骼的长度来推算骨骼当前的旋转量和构成三角形所需的旋转量,三角形由第一根骨骼、第二根骨骼以及目标构成。因为这种算法的原理是构成三角形,所以仅能对两根骨骼进行操作。

TwoBoneIK 适用于手臂、腿部,其实任何能够用两根骨头弯向某个目标来代表的关节均能使用。求解器比 SkeletonModification2DFABRIK 更轻量,但也能得到类似的比较自然的结果。

属性

bool

flip_bend_direction

false

float

target_maximum_distance

0.0

float

target_minimum_distance

0.0

NodePath

target_nodepath

NodePath(“”)

方法

NodePath

get_joint_one_bone2d_node() const

int

get_joint_one_bone_idx() const

NodePath

get_joint_two_bone2d_node() const

int

get_joint_two_bone_idx() const

void

set_joint_one_bone2d_node(bone2d_node: NodePath)

void

set_joint_one_bone_idx(bone_idx: int)

void

set_joint_two_bone2d_node(bone2d_node: NodePath)

void

set_joint_two_bone_idx(bone_idx: int)


属性说明

bool flip_bend_direction = false 🔗

  • void set_flip_bend_direction(value: bool)

  • bool get_flip_bend_direction()

如果为 true,则该修改中的骨骼在收缩时将向外弯曲,而不是向内弯曲。如果为 false,则骨骼在收缩时会向内弯曲。


float target_maximum_distance = 0.0 🔗

  • void set_target_maximum_distance(value: float)

  • float get_target_maximum_distance()

该目标可以到达的最大距离。如果目标比这个距离更远,则该修改将如同它就在这个最大距离处一样求解。当设置为 0 时,则该修改将不受距离限制地求解。


float target_minimum_distance = 0.0 🔗

  • void set_target_minimum_distance(value: float)

  • float get_target_minimum_distance()

该目标可以到达的最小距离。如果目标比这个距离更近,则该修改将如同它就在这个最小距离处一样求解。当设置为 0 时,则该修改将不受距离限制地求解。


NodePath target_nodepath = NodePath("") 🔗

作为 TwoBoneIK 修改目标的节点的 NodePath。该节点是弯曲 Bone2D 节点时该修改将使用的节点。


方法说明

NodePath get_joint_one_bone2d_node() const 🔗

返回 TwoBoneIK 修改器中作为第一个骨骼的 Bone2D 节点。


int get_joint_one_bone_idx() const 🔗

返回 TwoBoneIK 修改器中作为第一个骨骼的 Bone2D 节点的索引。


NodePath get_joint_two_bone2d_node() const 🔗

返回 TwoBoneIK 修改器中作为第二个骨骼的 Bone2D 节点。


int get_joint_two_bone_idx() const 🔗

返回 TwoBoneIK 修改器中作为第二个骨骼的 Bone2D 节点的索引。


void set_joint_one_bone2d_node(bone2d_node: NodePath) 🔗

设置 TwoBoneIK 修改器中作为第一个骨骼的 Bone2D 节点。


void set_joint_one_bone_idx(bone_idx: int) 🔗

设置 TwoBoneIK 修改器中作为第一个骨骼的 Bone2D 节点的索引。


void set_joint_two_bone2d_node(bone2d_node: NodePath) 🔗

设置 TwoBoneIK 修改器中作为第二个骨骼的 Bone2D 节点。


void set_joint_two_bone_idx(bone_idx: int) 🔗

设置 TwoBoneIK 修改器中作为第二个骨骼的 Bone2D 节点的索引。