サーフェースを指定してスプライトを生成します
sprite_create_from_surface(index, x, y, w, h, removeback, smooth, xorig, yorig);
この関数を使用すると、生成済みのサーフェースからスプライトを生成します。 x/yは左上隅(0, 0)を基準とした座標で、w/hで幅と高さを指定して切り取るサイズを指定します。
"removeback"にtrueを指定すると、左下隅のピクセルを透過色として扱い、同じ色を透過します。
"smooth"にtrueを指定した場合、"removeback"が有効であれば、エッジの周りに半透明の境界線を作成し、滑らかにします。
最後に、スプライトのx,yの原点を指定することができます。例えば、32x32のスプライトに(16, 16)を指定すると中心が原点となります。
デフォルトでは、境界ボックスが"automatically"になっています。これを変更するにはsprite_collision_mask()を使用します。
この関数により生成されたスプライトは不要になっても自動的に削除されません。そのため不要なスプライトを残したままにすると、メモリリークの原因となり、ゲームのパフォーマンス低下、最終的にはゲームをクラッシュさせる可能性があります。そのため、不要なスプライトはsprite_delete()で削除する必要があります。
var surf; surf = surface_create(32, 32); surface_set_target(surf); draw_clear_alpha(c_black, 0); draw_sprite(spr_Body, 0, 0, 0); draw_sprite(spr_Clothes, 0, 0, 0); draw_sprite(spr_Hair, 0, 0, 0); spr_custom = sprite_create_from_surface(surf, 0, 0, 32, 32, true, true, 16, 16); surface_reset_target(); surface_free(surf);
上記コードはサーフェースを生成し、各種スプライトを描画し、その描画内容をもとに"spr_custom"を生成し、サーフェースは削除します。