骨骼动画由许多"bones"组成,您将在动画程序中定义这些骨骼并为其命名,此函数可用于随时获取命名骨骼的某些数据。请注意,此数据是指骨骼的当前姿势,具体取决于所使用的动画集,并且该函数需要以前创建的DS map,调用该函数后,该贴图将具有以下关键点及其等效值:
返回的贴图数据类似于使用skeleton_bone_data_get()时为默认姿势返回的贴图数据,只是现在您有了额外的" world "键。这些是指骨骼相对于骨骼动画精灵的根(原点)的位置,并且返回的值不考虑通过设置内置精灵变量(如image_xScale或}image_angle)所进行的任何缩放或旋转。世界值为只读,无法设置。
提供此函数是为了让您可以"拦截"动画数据,并在将其绘制到屏幕上之前对其进行修改,因此您可能希望在Other-Animation Update事件中使用它,因为此事件恰好在绘制事件之前触发。
skeleton_bone_state_get(bone, map);
参数 | 类型 | 描述 |
---|---|---|
bone | String | 骨骼的名称(作为字符串)。 |
map | DS 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",以跟踪游戏中的鼠标位置。