角色特性

HIKPropertySetState 包含一个称为特性的大型配置选项集,用于定义您的角色以及控制 HumanIK 解算器的行为。所有可能的特性在 HIKProperty 枚举中标识。

每个特性都有一个模式,用于指示 HumanIK 解算器是否应启用其配置选项。许多特性还指示该解算器应在其计算中使用的值

创建 HIKPropertySetState 时,会为处于该状态的每个特性指定默认模式和默认值,您可以动态更改它们。

模式

每个特性必须在任意给定时间具有下列其中一个模式:

模式类型

并非所有特性都接受所有模式。每个特性接受的模式由特性的模式类型指示。可能的模式类型列在 HIKPropertyModeType 枚举中:HIKPropertyNoModeHIKPropertyOffOnHIKPropertyOffAutoUserHIKPropertyAutoUser

每个特性的模式类型是预设置的,无法更改。

设置特性的模式

要在 HIKPropertySetState 中设置特性的当前模式,请调用 HIKSetPropertyMode() 函数。

可以使用整数值指定所需的模式,其解释取决于特性的模式类型:

  • 如果特性的模式类型是 HIKPropertyNoMode,则根本不能更改其模式。
  • 如果特性的模式类型是 HIKPropertyOffOn,则值 0 会将特性模式设置为 Off,而值 1 会将特性模式设置为 On。
  • 如果特性的模式类型是 HIKPropertyOffAutoUser,则值 0 会将特性模式设置为 Off,值 1 会将特性模式设置为 Auto,值 2 会将特性模式设置为 User。
  • 如果特性的模式类型是 HIKPropertyAutoUser,则值 0 会将特性模式设置为 Auto,值 1 会将特性模式设置为 User。

例如,HIKHandFloorContactId 特性具有模式类型 HIKPropertyOffOn,因此,下面的第一行激活该特性。HIKAnkleHeightCompensationId 特性具有模式类型 HIKPropertyOffAutoUser,因此,下面的第二行激活该特性,并使 HumanIK 将其用户定义的值考虑在内。

HIKSetPropertyMode(MyPropertyState, HIKHandFloorContactId, 1);
HIKSetPropertyMode(MyPropertyState, HIKAnkleHeightCompensationId, 2);

根据为每个特性预设置的单位类型,HumanIK 解算器可能以不同的方式解释特性值。可能的单位类型列在 HIKPropertyUnit 枚举中:HIKPropertyNoUnitHIKPropertyPercentHIKPropertySecondHIKPropertyCentimeterHIKPropertyDegreeHIKPropertyEnumHIKPropertyReal

每个特性还具有预设置的最小值和最大值,您无法动态更改它们。

设置特性的值

要在 HIKPropertySetState 中设置特性的当前模式,请调用 HIKSetPropertyValue() 函数。

指定给特性的新值必须匹配特性的单位类型。对于大多数单位类型,该值应为浮点数。但是,对于具有 HIKPropertyEnum 单位类型的特性,该值应为反映所需枚举值的整数。

例如,HIKReachActorLeftAnkleId 特性具有单位类型 HIKPropertyPercent,因此,下面的第一行将值设置为 50%。HIKFootContactTypeId 特性具有模式类型 HIKPropertyEnum;因此,其值必须为反映特定于该特性的枚举的整数。在这种情况下,其值被设置为 2,以与 ToeBase 接触类型相对应。有关具有 HIKPropertyEnum 值类型的每个特性可以使用的枚举值的详细信息,请参见详细的特性说明。

HIKSetPropertyValue(MyPropertyState, HIKReachActorLeftAnkleId, 0.50);
HIKSetPropertyValue(MyPropertyState, HIKFootContactTypeId, 2);

特性说明

接下来的页面列出并描述每个角色特性及其模式类型、接受的模式、默认模式、单位类型、接受的值和默认值。这些特性分为以下几大类:

具有 HIKPropertyNoMode 模式类型的特性没有在这些页面上列出的任何其他模式信息,因为其模式不能更改。

其值从不被 HumanIK 使用的特性没有在这些页面上列出的值信息。通常情况下,这仅适用于 HIKPropertyOffOn 模式类型为简单的 on/off 切换的特性。

检索特性信息

HumanIK 提供了一组函数,用于检索有关可以在 HIKPropertySetState 中配置的每个角色特性的信息,例如其唯一 ID、模式类型、默认模式、单位类型、默认值和用户可读的名称。虽然在游戏过程中您不太可能需要在运行时调用这些函数,但是如果选择为控制 HumanIK 构建 GUI,则可以使用这些特性信息检索函数。

有关这些函数的详细信息,请参见 API 参考的“检索特性信息”模块。