skeleton_bone_state_get

骨骼动画由许多"bones"组成,您将在动画程序中定义这些骨骼并为其命名,此函数可用于随时获取命名骨骼的某些数据。请注意,此数据是指骨骼的当前姿势,具体取决于所使用的动画集,并且该函数需要以前创建的DS map,调用该函数后,该贴图将具有以下关键点及其等效值:

返回的贴图数据类似于使用skeleton_bone_data_get()时为默认姿势返回的贴图数据,只是现在您有了额外的" world "键。这些是指骨骼相对于骨骼动画精灵的(原点)的位置,并且返回的值不考虑通过设置内置精灵变量(如image_xScale}image_angle)所进行的任何缩放或旋转。世界值为只读,无法设置。

提供此函数是为了让您可以"拦截"动画数据,并在将其绘制到屏幕上之前对其进行修改,因此您可能希望在Other-Animation Update事件中使用它,因为此事件恰好在绘制事件之前触发。

 

语法:

skeleton_bone_state_get(bone, map);

参数类型描述
boneString骨骼的名称(作为字符串)。
mapDS Map存储骨骼数据的(先前创建的)DS map。

 

 

返回:

N/A

 

例子:

var map = ds_map_create();
skeleton_bone_state_get("head", map);
var xx = ds_map_find_value(map, "worldX");
var yy = ds_map_find_value(map, "worldY");
var deltax = mouse_x - (x + xx);
var deltay = mouse_y - (y + yy);
var angle = -radtodeg(arctan2(deltay, deltax));
ds_map_replace(map, "angle", angle);
skeleton_bone_state_set("head", map);
ds_map_destroy(map);

上面的代码创建了一个DS map,然后用名为" Head "的骨骼中的数据填充它。然后,它提取骨骼的世界位置,并使用该数据来设置骨骼的"angle",以跟踪游戏中的鼠标位置。