骨骼动画精灵

本节中的函数用于从骨骼动画文件(特别是spine导出的JSON文件)导入的精灵,并且可用于获取有关游戏中动画资源的信息,以及用于设置动画中的某些属性。这些函数可以与常规Sprite函数和变量一起使用,允许您(例如)使用这些特殊函数混合两个骨骼动画,同时使用普通Sprite实例变量设置图像比例(有关Sprite实例变量的详细信息,请参见此处的)。

重要大多数骨架精灵函数采用精灵或实例引用,因为它们假定骨架精灵已分配给当前实例(通过 IDE 或通过设置sprite_index)。这意味着在不同的上下文(例如全局脚本或构造函数)下运行此类函数将导致错误,因为在这种情况下当前的self将不具有骨架精灵。

注意有关导入使用Spine制作的骨骼动画精灵的更多信息,请参见导入非位图精灵一节。

您可以从以下部分找到有关这些类型的精灵的函数的更多信息:

 

Tint Black 支持

此函数允许 Spine 精灵插槽的深色区域以不同于浅色区域的方式着色 (这是 Spine IDE 的一项函数,有关更多详细信息,请参阅 Tint Black 部分 此处 )。目前,为了在 GameMaker 中使用此功能,您需要在绘制使用它的 Spine 精灵时使用自定义着色器。该着色器包含一个名为 "GM_spinetintblackcolour" 的全局统一变量,跑步者用当前的淡黑色填充该变量,该颜色是从脊柱数据中自动检索的。所需的着色器如下所示:

顶点着色器(与默认的穿过顶点着色器相同)

attribute vec3 in_Position; // (x,y,z)
attribute vec4 in_Colour; // (r,g,b,a)
attribute vec2 in_TextureCoord; // (u,v)

varying vec2 v_vTexcoord;
varying vec4 v_vColour;

void main()
{
    vec4 object_space_pos = vec4( in_Position.x, in_Position.y, in_Position.z, 1.0);
    gl_Position = gm_Matrices[MATRIX_WORLD_VIEW_PROJECTION] * object_space_pos;
    v_vColour = in_Colour;
    v_vTexcoord = in_TextureCoord;
}

片段着色器:

varying vec2 v_vTexcoord;
varying vec4 v_vColour;

uniform vec4 gm_SpineTintBlackColour; // This is the uniform containing the tint-black colour

void main()
{
    vec4 tb = gm_SpineTintBlackColour;
    vec4 texcol = texture2D( gm_BaseTexture, v_vTexcoord );
    vec4 outcol;
    outcol.rgb = v_vColour.rgb * texcol.rgb;
    outcol.rgb += tb.rgb * ((tb.a * (texcol.a - 1.0)) + (1.0 - texcol.rgb)); // This line performs the tint-    black blending logic
    outcol.a = v_vColour.a * texcol.a;
    gl_FragColor = outcol;
}

您可以通过首先调用着色器,然后绘制精灵,然后重置着色器来使用它,如下所示:

shader_set(shd_spine_tint_black);
draw_self();
shader_reset();