sprite_create_from_surface(index, x, y, w, h, removeback, smooth, xorig, yorig);
Argument La description index L'indice de la surface à créer. x La position x à copier à partir de. y La position y à partir de laquelle copier. w La largeur de la zone à copier (à partir de la position x). h La hauteur de la zone à copier (à partir de la position y). removeback Indique s'il faut rendre tous les pixels avec la couleur d'arrière-plan (pixel en bas à gauche) transparent. smooth Indique s'il faut lisser les bords. xorig Indique la position x de l'origine dans l'image-objet. yorig Indique la position y de l'origine dans l'image-objet.
Real (unique sprite ID value)
Avec cette fonction, vous pouvez créer un sprite à partir d'une surface précédemment initialisée (la valeur ID de l'indice de surface est renvoyée lorsque vous créez la surface en utilisant surface_create ). Les coordonnées x et y que vous saisissez dans la fonction doivent être relatives à la position (0,0) de la surface (le coin supérieur gauche) et non à la fenêtre de jeu (ni à la vue si vous en avez une active). Les arguments width et height sont en pixels et définissent la largeur et la hauteur de la partie de la surface à utiliser.
Définition de l'argument "removeback" à true va supprimer une couleur de l'image-objet, en vérifiant le pixel inférieur gauche de l'image-objet pour la couleur, puis en utilisant celle-ci comme couleur à supprimer.
Si vous choisissez l'option "removeback", vous pouvez également souhaiter que GameMaker Studio 2 lisse les bords de l'image-objet en définissant l'argument "smooth" sur true. Tout cela est de créer une bordure semi-transparente autour des bords de l'image-objet après que son arrière-plan a été supprimé.
Enfin, vous pouvez également spécifier le x et l' origine y pour l'image - objet. C'est le point où l'image-objet est "fixée" sur l'instance qui l'utilise, et est toujours calculée par rapport au coin 0,0 en haut à gauche d'une sous-image d'image-objet. Ainsi, par exemple, un sprite de 32 x 32 pixels dont les valeurs sont définies sur (16,16) aura son origine au centre.
Par défaut, tous les nouveaux sprites ont leurs boîtes de délimitation calculées automatiquement (la bbox exacte dépendra de la taille et de la transparence de l'image-objet), mais vous pouvez personnaliser cela, auquel cas vous devriez également utiliser la fonction sprite_collision_mask.
Remarque: lorsque vous créez une image-objet dans GameMaker Studio 2 avec cette méthode, vous devez vous rappeler de l'enlever à nouveau (avec sprite_delete ) lorsqu'il n'est plus nécessaire, sinon il y a un risque de fuite de mémoire qui ralentira et finira par planter votre jeu.IMPORTANT! Cette fonction n'est pas disponible avec la licence d'évaluation du produit.
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);
Le code ci-dessus crée une surface et stocke son index dans la variable locale "surf". Il cible ensuite cette surface, l'efface et attire plusieurs sprites les uns sur les autres. Enfin, il crée un nouveau sprite à partir de l'image composite dessinée sur la surface et assigne son index à "spr_Custom" avant de libérer la mémoire utilisée par la surface.