skeleton_bone_state_get


Syntaxe:

skeleton_bone_state_get(bone, map);


Argument La description
bone Le nom (comme une chaîne) de l'os.
map Le fichier ds_map (précédemment créé) qui stocke les données de l'os.


Résultats:

N/A


La description

Votre animation squelettique est composée d'un certain nombre d '«os», que vous aurez définis et nommés dans votre programme d'animation, et cette fonction peut être utilisée pour obtenir certaines données pour l'os nommé à tout moment. Notez que ces données se réfèrent à la pose actuelle pour le squelette, en fonction de l'ensemble d'animation utilisé, et la fonction nécessite un préalablement créé ds_map, qui aura alors les clés suivantes et leurs valeurs équivalentes après avoir appelé la fonction:

  • "x": La position x locale de l'os par rapport à l'os parent.

  • "y": La position y locale de l'os par rapport à l'os parent.

  • "angle": La rotation locale de l'os par rapport à l'os parent.

  • "xscale": L'échelle horizontale locale de l'os, en référence à l'os parent.

  • "yscale": L'échelle verticale locale de l'os, en référence à l'os parent.

  • "worldX": La position x de l'os par rapport à la racine de l'animation (c'est une valeur en lecture seule ).

  • "worldY": La position y de l'os par rapport à la racine de l'animation (c'est une valeur en lecture seule ).

  • "worldScaleX": L'échelle horizontale de l'os dans l'espace "global" (en ignorant toutes les transformations par GameMaker Studio 2 ), par opposition à l'échelle en référence à son os parent (c'est une valeur en lecture seule ).

  • "worldScaleY": L'échelle verticale de l'os dans l'espace "global" (en ignorant toute transformation par GameMaker Studio 2: Studio par opposition à l'échelle en référence à son os parent (c'est une valeur en lecture seule ).

  • "worldAngle": La rotation de l'os par rapport à la racine de l'animation (c'est une valeur en lecture seule ).

  • "parent": Le nom (une chaîne) de l'os parent.

Les données de carte retournées sont similaires à celles renvoyées pour la pose par défaut lorsque vous utilisez skeleton_bone_data_get, seulement maintenant vous avez les clés "monde" supplémentaires. Elles se réfèrent à la position de l'os par rapport à la racine (origine) de l'image-objet d'animation squelettique et les valeurs renvoyées ne prennent en compte aucune mise à l'échelle ou rotation effectuée en définissant les variables d'image-objet prédéfinies image_xscale ou image_angle. Les valeurs mondiales sont en lecture seule et ne peuvent pas être définies.

Cette fonction est fournie afin que vous puissiez "intercepter" les données d'animation et les modifier avant qu'elles ne soient dessinées à l'écran. Vous devriez donc les utiliser dans l'événement Other - Animation Update, car cet événement est déclenché juste avant le Draw. Événements.

IMPORTANT! Cette fonction n'est pas disponible avec la licence d'évaluation du produit.


Exemple:

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);

Le code ci-dessus crée un ds_map et le remplit ensuite avec les données de l'os nommé "head". Il extrait ensuite la position du monde pour l'os et utilise ces données pour régler l'angle de l'os afin de suivre la position de la souris dans le jeu.