L'éditeur d'objets


Éditeur d'objets

Les objets sont la ressource que nous utilisons pour contrôler les aspects d'un jeu et pour faire des choses spécifiques. La plupart du temps, ils ont un sprite qui leur est associé afin que vous les voyiez dans les salles de jeu, mais parfois ils sont utilisés comme contrôleur "en coulisse" pour faire des choses liées à l'utilisateur ou pour le timing, etc. On peut leur donner des comportements et ils peuvent réagir à certains événements ainsi qu'à d'autres, et la plupart des choses que vous voyez dans un jeu sont basées sur des objets et leurs interactions. Maintenant, nous disons "basé sur" parce que vous ne placez pas les objets directement dans les salles de jeux, mais plutôt que vous placez des instances de ces objets qui sont essentiellement des copies (ou des clones si vous préférez) de la ressource objet. C'est une chose très importante à retenir car les instances et les objets ne sont pas la même chose et chacun a son propre ensemble de fonctions qui peuvent les affecter.

Pour clarifier cela, pensez à un jeu fait avec GameMaker Studio 2. Tous les personnages, monstres, balles, murs, etc... sont tous des objets que vous créez dans l'arbre des ressources. Vous faites ensuite glisser l'objet dans une pièce de l' éditeur de pièce pour créer une instance copiée à partir du modèle d'objet de base. L'instance dans la pièce peut alors être modifiée dans l'éditeur lui-même ou par le biais du code, afin qu'elle puisse être mise à l'échelle, ou colorée, ou que d'autres détails soient modifiés à partir de l'objet "base". Donc, quand nous parlons de quelque chose qui affecte ou change une instance, nous voulons dire qu'elle affecte une copie particulière d'un objet dans une pièce. Seule cette instance unique est affectée alors que tout le reste ne l'est pas. Mais, quand nous parlons d'affecter ou de modifier un objet, nous voulons dire que nous modifions l'objet dans l'arbre des ressources et tout ce que nous faisons pour qu'il se reflète dans toutes les instances créées à partir de ce point également. Donc, l'objet est le modèle pour l'instance, et l'instance est ce que nous plaçons dans une pièce pour faire notre jeu.

Pour créer un objet dans votre jeu, vous pouvez faire un clic droit dans le dossier des ressources de l'objet et cliquez sur l'option Créer. Cela ouvrira la fenêtre illustrée en haut de cette page avec les sections suivantes:

Ici vous pouvez donner un nom à votre objet. Ce nom ne doit jamais contenir d'espaces ni de caractères non autorisés (seuls les caractères alphanumériques et l'underbar «_» sont autorisés) et doivent être courts mais mémorables afin que vous puissiez facilement identifier les ressources plus tard lorsque vous en possédez plusieurs. Par exemple, beaucoup de personnes utilisent un préfixe ou un suffixe pour identifier les différences entre les ressources, comme "obj_Ship" ou "Ship_obj".

Ensuite, vous pouvez choisir l'image-objet pour l'objet si vous souhaitez en avoir un. Cliquez avec le bouton gauche de la souris sur la boîte de sprite et l' explorateur de ressources apparaîtra avec une liste de tous les sprites disponibles dans l'arborescence des ressources: Asset Explorer

Vous pouvez ensuite sélectionner celui que vous voulez utiliser pour l'objet. Avec un sprite assigné à l'objet, vous pouvez cliquer sur le bouton Modifier le sprite pour modifier les propriétés de l'image-objet, ou si vous n'avez pas de sprite pour l'objet mais que vous souhaitez en créer un, vous pouvez cliquer sur le bouton Ajouter un sprite pour créer une nouvelle ressource d'image-objet et l'affecter. Vous pouvez également modifier l'image de ressource d'image-objet qui a été attribuée en cliquant sur le bouton Modifier l'image pour ouvrir l'éditeur d'image.


Sous la zone d'affectation des sprites, vous disposez d'un bouton pour choisir un masque de collision spécifique. Par défaut, un objet utilisera les propriétés de collision de l'image-objet qui lui est assignée, mais dans certains cas, vous pouvez souhaiter que les collisions soient basées sur une forme de masque différente. Par exemple, vous pouvez avoir un jeu descendant où le sprite principal a un masque de collision rectangulaire, mais pour rendre les collisions plus fluides, un masque circulaire peut être meilleur. Dans ce cas, vous pouvez cliquer sur le bouton Masque de collision et sélectionner une autre ressource d'image-objet. Désormais, les instances de l'objet dessineront l'image-objet affectée, mais les collisions de base de l'image-objet du masque.


Ici vous êtes présenté avec les options suivantes pour votre objet:

Visible indique si les instances de cet objet sont visibles au démarrage de la pièce. Normalement, la plupart des instances sont visibles, mais il est parfois utile d'en avoir des invisibles - par exemple, vous pouvez les utiliser pour contrôler un monstre en mouvement ou pour garder des valeurs et effectuer certaines actions programmées. Les objets invisibles continueront à réagir aux événements et s'ils ont un sprite ou un masque qui leur est assigné, ils réagiront également si d'autres instances entrent en collision avec eux... ils ne peuvent tout simplement pas être vus et n'effectuent pas leur événement de dessin. Par défaut, l'indicateur visible est vérifié.


Lorsque vous GameMaker Studio 2 une instance comme solide, vous GameMaker Studio 2 à GameMaker Studio 2 qu'il doit tenter de résoudre les collisions avant de déclencher un événement de collision. C'est une fonctionnalité très basique, et en réalité tout ce qu'elle fait est de ramener l'instance à la position où elle se trouvait avant qu'une collision ne soit détectée avant d'exécuter tout code ou DnD™ qui est dans l'événement lui-même, et utilisation limitée.


Persistant - Un objet persistant est celui qui ne disparaît pas quand la pièce est changée, mais plutôt "persiste" et est transporté dans la nouvelle pièce. Il ne disparaîtra que lorsque vous le détruisez explicitement, soit avec une action destroy, soit en code. Cela signifie que si vous placez un objet persistant dans une pièce, il sera toujours disponible dans toutes les pièces suivantes et continuera à effectuer toutes les actions affectées aux événements dans ses propriétés d'objet, sauf l'événement create, qui est uniquement déclenché une fois. est créé initialement et non lorsque vous changez de pièce.

Ceci est utile lorsque vous avez, par exemple, un personnage principal qui se déplace d'une pièce à l'autre et que vous voulez conserver les mêmes variables dans cet objet, mais vous devez prendre soin de créer et de détruire correctement les objets persistants. obtenir des erreurs rampant dans votre projet par erreur.

Notez également qu'un objet persistant aura toujours ses événements Game Start, Game End, Room Start et Room End déclenchés. Toutefois, si vous redémarrez le jeu (avec, par exemple, la fonction game_restart ()), tous les objets persistants seront supprimés et uniquement exister quand créé à nouveau par le jeu. Notez également que si vous désactivez un objet persistant, il ne passera plus d'une pièce à l'autre à moins d'être réactivé avant que l'événement Room End ne soit déclenché.


Lorsque vous cochez la case Utilise la physique, vous GameMaker Studio 2 à GameMaker Studio 2 que cet objet doit faire partie d'un univers physique. Si vous cochez cette case, vous ouvrirez également une autre fenêtre chaînée dans laquelle vous pourrez définir les propriétés physiques de toutes les occurrences de cet objet. Plus d'informations à ce sujet peuvent être trouvées plus bas sur cette page dans la section Physique.



Options

La section d'options définit les différentes options de propriété pour votre objet et comment les instances se comporteront lorsqu'elles seront placées dans une pièce. Ici, vous ajoutez des événements, qui sont les «blocs de construction» de votre code de jeu, définissez si l'objet doit avoir un parent et définissez également les propriétés physiques si vous voulez activer les fonctions physiques.

Alors, quels sont les événements? Fondamentalement, ce sont des moments discrets dans la boucle du jeu où les choses se produisent en fonction de ce que vous avez programmé pour eux. GameMaker Studio 2 fonctionne avec des cycles de ces événements - à partir du moment où une salle est démarrée, il y a une boucle de jeu où chaque étape (une étape est un moment du jeu, régie par le réglage de la vitesse de la pièce). Des séries d'événements sont exécutées ou vérifiées, et vous pouvez choisir de placer du code ou des actions DnD dans vos objets qui répondent à ces événements.

Regardons une configuration d'objet typique avec des événements et du code: Vue des événements de l'éditeur d'objets

Comme vous pouvez le voir dans notre exemple d'objet, il y a un certain nombre d'événements auxquels il devrait répondre, mais initialement lorsque vous créez un objet, cette liste est vide et vous devez décider quels sont les événements dont vous avez besoin et les instances de cet objet les événements sont déclenchés. Pour ajouter des événements dans l'objet, vous devez appuyer sur le bouton Ajouter un événement situé en bas de la liste des événements, ce qui affichera la fenêtre suivante: Liste des événements de l'éditeur d'objets

C'est la liste de tous les événements de base auxquels un objet peut répondre, bien que certains de ces événements aient également des sous-événements pour affiner les comportements. Par exemple, si vous ajoutez une touche Event, vous obtiendrez alors une autre fenêtre surgissant avec les sous-événements qui vous permettent de sélectionner la clé à laquelle l'objet doit répondre. Une fois votre événement sélectionné, la fenêtre de code sera chaînée et s'ouvrira sur la droite. Vous pouvez maintenant modifier le code pour donner à votre objet un comportement ou une réaction spécifique à cet événement.

Vous pouvez cliquer sur le bouton droit de la souris sur n'importe quel événement pour obtenir les options de menu suivantes: Menu Événements de l'éditeur d'objets

Ces options sont:

  • Ajouter un événement - Ajouter un nouvel événement à partir de la liste des événements.

  • Couper / Copier / Coller des événements - Couper, copier ou coller l'événement sélectionné. Vous pouvez également utiliser les raccourcis clavier standard: / + X, / + C, et / + V.

  • Dupliquer un événement - Dupliquer l'événement choisi. Cela prendra le contenu de l'événement choisi et les dupliquera dans un autre événement que vous spécifiez.

  • Changer l'événement - Changer l'événement. Cela vous demandera de choisir une autre catégorie d'événement et une fois sélectionné, le contenu de l'événement en cours sera changé en nouvel événement (en supprimant l'événement original dans le processus).

  • Convertir en Glisser / Déposer / Code - Les événements d'objet seront créés en utilisant la méthode choisie lors de la création du projet, soit en utilisant du code, soit en utilisant des actions Glisser-Déposer. Avec cette option, vous pouvez convertir de l'un à l'autre, quel que soit le type de projet.

  • Supprimer un événement - Supprime l'événement (ou les événements).

Lorsque vous supprimez des événements, vous pouvez utiliser + pour sélectionner plusieurs événements, puis supprimez-les tous ensemble.

Vous devriez également noter que vous pouvez nommer des événements, ou au moins leur donner un court texte descriptif qui sera affiché à côté d'eux dans l'éditeur d'événements. Pour ce faire, ajoutez simplement ce qui suit dans la toute première ligne de l'éditeur de code de l'événement:

/// @description Your text here

Donc, vous pourriez avoir quelque chose comme ça dans - par exemple - un événement d'alarme

/// @description This is the AI Fight alarm

Et maintenant, dans votre éditeur d'événements, vous verrez ceci: Événements de l'éditeur d'objets


Notez que la section sur les événements ci-dessus donne simplement un aperçu de leur fonctionnement, mais pour plus de détails sur tous les événements disponibles, veuillez consulter la section suivante:

  1. Liste des événements d'objet

Les autres options pour un objet sont:

Lorsque vous travaillez avec des objets dans l' GameMaker Studio 2, vous pouvez configurer des hiérarchies parent / enfant. Cela est fait en cliquant sur le bouton "Parent" dans l'éditeur d'objet et en choisissant un autre objet de l'arbre de ressources pour être le "parent" de celui en cours d'édition: Parents

Ainsi, chaque objet de votre projet de jeu peut avoir un objet parent, mais qu'est-ce que cela signifie? Eh bien, quand un objet a un parent assigné, il peut partager du code, des actions et des événements avec ce parent. Ce partage est appelé "héritage" et un objet qui a un parent est appelé un objet "enfant". Non seulement un enfant peut partager du code avec son parent, mais vous pouvez effectuer des vérifications et exécuter du code sur des objets parents, et il inclura automatiquement les objets enfants, ce qui économise beaucoup de temps et d'énergie.

Si cela semble compliqué, alors une autre façon de regarder un objet parent est de "regrouper" des objets sous le même parapluie et de les faire partager certaines choses sans perdre leur propre identité. Peut-être que cela ne clarifie pas trop les choses, alors donnons quelques exemples...

Disons que vous avez un objet "joueur" et quatre objets "ennemis" différents. Maintenant, vous voulez que le joueur meure s'il touche l'un de ces quatre objets et cela implique normalement quatre événements de collision différents avec quatre ensembles différents d'actions ou de code, un pour chacun des objets ennemis. MAIS si nous créons un objet parent pour tous les ennemis, alors nous pouvons créer un événement de collision avec l'objet parent seulement et il se déclenchera peu importe lequel des quatre objets ennemis "enfants" touchera le joueur. Des trucs pratiques! Dans l'objet GameMaker Studio 2 actuel, vous voyez quelque chose comme ceci: Parents

Sur la gauche, nous avons quatre événements de collision distincts et sur la droite, nous avons un seul événement de collision, car nous avons créé un objet "parent" et lui avons assigné tous les objets ennemis. Notez qu'un objet parent ne doit contenir aucun événement ou code...

Un autre exemple de parentage serait si vous avez un jeu où vous voulez créer 10 objets différents et les faire tous se comporter de la même manière. Pour cela, vous devez créer un objet parent et avoir toutes vos actions de comportement ou code dans les événements requis, puis créez vos dix objets sans actions ou code, mais avec des sprites différents, et assignez-leur votre objet parent. Maintenant, lorsque vous placez ces instances dans une pièce, elles se comportent toutes de la même manière, mais elles ont un aspect différent, car elles "héritent" des événements du parent.

Enfin, vous pouvez utiliser le rôle parental pour "mélanger et assortir" les événements et les comportements. Nous allons illustrer cela avec un dernier exemple... Disons que vous voulez deux monstres: un qui monte et descend, un autre qui bouge à gauche et à droite, mais vous voulez aussi qu'ils aient la même santé, tirer sur le joueur et blesser le joueur s'ils entrent en collision avec eux. Dans ce cas, vous pouvez voir que presque tous les événements doivent avoir les mêmes actions sauf pour un ou deux qui régissent le mouvement. Donc, encore une fois, nous pouvons faire d'un objet le parent de l'autre, mais dans ce cas nous définissons également certains événements pour l'objet enfant. Ces événements "remplacent" les événements parents, ce qui signifie que chaque fois qu'un événement de l'objet enfant contient des actions, celles-ci sont exécutées à la place des actions contenues dans l'événement du parent. Si vous voulez également exécuter l'événement parent, vous pouvez appeler l'événement dit "hérité" en utilisant la fonction event_inherited() ou l'action DnD™ Appelez l'événement parent. Hériter des événements

Sur la gauche ci-dessus est l'objet parent avec 5 événements, et sur la droite, vous pouvez voir l'objet "enfant". L'objet enfant contient également 5 événements, mais deux d'entre eux remplacent les événements hérités du parent (les événements Step et Draw ) et les trois autres sont grisés car ce sont les événements hérités du parent. Les événements hérités auront également l'icône "substitution parent" à côté d'eux dans l'éditeur d'événements: Remplacement des parents

Lorsque vous cliquez sur un événement qui a été hérité, l'éditeur de code ouvrira le code parent hérité, mais vous ne pourrez pas éditer ce code car vous ne pouvez le modifier que dans l'objet parent lui-même. Vous pouvez cliquer sur le bouton droit de la souris sur l'un des événements parents pour ouvrir le menu d'options suivant: Menu RMB des événements parents

Ici vous pouvez choisir deux Ouvrez l'événement parent pour inspecter le code, ou vous pouvez choisir Hériter l'événement ou Remplacer l'événement. Si vous choisissez Hériter, l'éditeur de code s'ouvrira avec la fonction event_inherited() déjà ajouté (ou l'action Call Parent Event si vous utilisez DnD™). Tout autre code que vous placez dans cet événement sera maintenant exécuté ainsi que le code que l'objet parent a. Si vous choisissez de remplacer l'événement, la fenêtre de code s'ouvrira également, event_inherited() La fonction ne sera pas appelée, donc tout ce que vous ajoutez ici sera exécuté à la place du code dans l'objet parent.

REMARQUE: À partir de l'éditeur de code, vous pouvez accéder rapidement à l'objet parent en cliquant sur le bouton droit de la souris. et sélectionnez Aller à l'objet dans le menu contextuel ou (si l'événement a été remplacé), vous pouvez sélectionner Ouvrir l'événement hérité pour accéder directement à un éditeur de code avec le code d'événement parent.


Chaque fois que vous ciblez un objet parent dans le code, le code s'appliquera également aux "enfants" de l'objet parent. Cela se produit lorsque, dans une action, vous indiquez que l'action doit être appliquée aux instances d'un objet donné, et dans le code, cela se produit lorsque vous utilisez le with() déclaration. Il fonctionnera comme ça aussi quand vous appelez des fonctions de code, comme instance_position, instance_number, etc... où si vous fournissez un objet parent, toutes les instances des instances parent et enfant seront incluses dans les vérifications. Enfin, le parentage fonctionne aussi quand vous faites référence à des variables dans d'autres objets, comme dans l'exemple de monstre ci-dessus si je mets l'ennemi 1 à 10, alors l'ennemi 2 passera à 10 comme ennemi de l'ennemi 1.

Il est généralement considéré comme une bonne pratique dans la plupart des cas de créer un objet parent de base et de faire en sorte que cet objet de base contienne tous les comportements par défaut, mais n'utilise jamais une instance dans le jeu. Utilisez plutôt tous les objets enfants et n'utilisez le parent que dans des situations comme celles que j'ai décrites ci-dessus, pour des collisions, pour référencer des variables, etc... Vous devriez également réaliser que les parents peuvent avoir des parents aussi! Évidemment, vous ne pouvez pas créer un cycle de "parent 1 est enfant de parent 2 est enfant de parent 1" mais vous pouvez créer ce qu'on appelle "hiérarchie d'objets" où "parent3 est enfant de parent2 est enfant de parent1". Ceci est extrêmement utile pour garder votre jeu structuré et il vous est fortement conseillé d'apprendre à utiliser ce mécanisme.


Lorsque vous créez une nouvelle ressource d'objet, vous devez cocher la case Utilise la physique, qui n'est pas cochée par défaut. La sélection de cette option changera radicalement le comportement de votre objet lorsqu'une instance de celui-ci est placée dans une pièce, car cela active les propriétés physiques de l'objet et signifie que ses fonctions de mouvement et de collision "traditionnelles" ne sont plus valides (mais seulement la pièce sur laquelle elle est placée est également marquée comme étant une salle de physique Voir - The Room Editor ). Lorsque vous cochez cette case, la fenêtre de ressource d'objet ouvre une nouvelle fenêtre chaînée pour l'éditeur de physique: Éditeur d'objets Physique

Avant de commencer à éditer les valeurs pour les comportements physiques, il est conseillé de définir d'abord la forme de la collision. Avec le système de collision "normal", vos collisions sont basées sur le masque de l'image-objet assigné à l'objet, mais avec la physique activée, ce n'est plus le cas. Nous devons assigner une collision à l'objet lui-même (cela s'appelle proprement une fixture, voir The Physics Functions pour plus d'informations), qui peut être un cercle, un rectangle ou une forme de polygone que vous définissez vous-même. En cliquant sur le bouton Modify Collision Shape, vous ouvrez la fenêtre chaînée suivante pour éditer la forme: Éditeur d'objets Éditeur de formes physiques

Cela ressemble à l' éditeur de chemin, et fonctionne de la même manière. Cependant, selon le masque que vous avez choisi, il peut être plutôt plus restrictif:

  • Si vous avez un masque circulaire, vous pouvez uniquement tirer sur l'un des points du chemin pour agrandir ou réduire le diamètre du cercle.
  • Si vous avez un masque rectangulaire, alors vous pouvez déplacer l'un des quatre coins, mais les correspondants ajusteront la position automatiquement pour maintenir toujours un rectangle
  • Si vous avez un masque personnalisé (polygone), il doit avoir un minimum de 3 et un maximum de 8 points, et il doit être convexe (voir l'image ci-dessous).
Type de forme Physique de l'éditeur d'objets

Une fois que vous avez configuré votre forme, vous devez définir les propriétés physiques de base que votre objet doit avoir. Ceux-ci sont configurés en changeant les paramètres suivants:

La densité de quelque chose est définie comme sa masse par unité de volume, ce qui signifie essentiellement combien de masse est entassée dans l'espace qu'il occupe dans le monde. Ainsi, un ballon aurait une faible densité car il a peu de masse qui occupe un grand espace, alors qu'une barre de plomb aurait une densité élevée car elle a une grande masse, mais occupe peu d'espace. Dans le monde de la physique 2D de GameMaker Studio 2, la masse est calculée automatiquement pour vous à partir des valeurs que vous entrez pour la densité et de la surface de la forme que vous définissez pour l'appareil. Cela aura un impact direct sur l'inertie d'un luminaire ainsi que sur la façon dont il réagit aux collisions et aux forces, donc si vous faites une petite forme avec une densité élevée, il aura une très grande masse (comme une barre de plomb), mais si vous définissez une grande forme avec une faible densité, elle aura une masse beaucoup plus petite (comme un ballon).


En physique, la restitution est définie comme « le retour d'un objet ou d'un système à son état initial après déformation élastique », mais comme les appareils de GameMaker Studio 2 sont des corps rigides et ne peuvent pas être déformés, la restitution est vraiment une façon de dire "Bouncy" l'appareil est. Ce paramètre affecte la quantité de rebondissement d'un objet lorsqu'il entre en collision avec d'autres objets et dépend d'autres forces agissant sur l'instance telles que la gravité et la friction.


Par défaut, le groupe de collision pour tous les objets physiques est 0, ce qui signifie qu'ils interagiront normalement, ce qui signifie qu'ils doivent interagir avec un événement de collision (un simple commentaire déclenchera la collision) sinon aucune collision ne se produira. être enregistré. Cependant, vous pouvez également spécifier qu'un objet doit appartenir à un groupe de collision spécifique. En assignant des objets à un groupe de collision positif (ie: trois objets sont tous dans le groupe " 2 ") vous GameMaker Studio à GameMaker Studio 2 que les instances de ces objets doivent toujours entrer en collision, même si elles n'ont rien dans leur collision, obéissant aux propriétés physiques Inversement, si vous avez des objets avec un groupe de collision négatif (ie: quatre objets assignés " -1 "), vous GameMaker Studio 2 à GameMaker Studio 2 qu'ils ne doivent jamais entrer en collision et toute collision les événements entre eux seront ignorés.

REMARQUE: L'utilisation de groupes de collision augmente considérablement le traitement requis par le système de physique et ne doit être utilisée que lorsque cela est absolument nécessaire, et vous devez avoir le moins de groupes possible.

L'amortissement est utilisé pour réduire la vitesse du monde physique d'une instance, et diffère du frottement en ce que la friction ne se produit que lorsque deux instances avec des formes de collision (appareils) sont en contact. L'amortissement est également beaucoup moins cher à simuler que le frottement, mais veuillez noter que l'amortissement ne remplace pas le frottement; les deux effets peuvent et doivent être utilisés ensemble.


Si vous pensez à un objet en rotation dans le «monde réel», à moins d'avoir un moteur ou dans l'espace, il ralentit avec le temps en raison de l'influence des forces externes (comme le frottement avec l'air). Nous pouvons utiliser cette option pour simuler cet effet et réduire la vitesse de rotation des instances dans le monde physique, car sans elle, toute instance en rotation continuerait à tourner infiniment.


Le frottement est la force qui résiste au mouvement relatif des éléments matériels qui glissent les uns contre les autres, ce qui, dans le monde de la physique de GameMaker Studio 2, se traduit par la perte d'élan causée par la collision de deux instances avec des projecteurs liés. Ainsi, lorsque deux instances entrent en collision, leur mouvement est affecté par cette valeur, avec un frottement élevé entraînant une perte d'impulsion plus importante qu'une valeur inférieure.

Enfin, il y a trois options supplémentaires qui peuvent être activées ou désactivées pour votre appareil, Sensor, Start Awake et Kinematic. Chacun de ces drapeaux va changer le comportement de votre appareil de la manière suivante:

En cochant cette case, vous GameMaker Studio 2 à GameMaker Studio 2 d'ignorer les propriétés physiques de l'objet, mais de renvoyer un événement de collision avec les objets qui l'entourent. de cette façon, vous pouvez avoir une instance sans présence physique dans la pièce, mais qui peut réagir à la collision d'une autre instance, comme le joueur, et faire quelque chose à son tour, comme ouvrir une porte ou déclencher une action dans une autre placer dans la pièce.

REMARQUE: Un appareil de détection déclenchera l'événement de collision lorsque la collision se produit pour la première fois, ce qui signifie que vous n'obtiendrez pas un flot d'événements de collision lorsque les deux corps se chevauchent (ce qui se produit habituellement). Si elles cessent de se chevaucher et se chevauchent par la suite, un autre événement de collision sera déclenché.

Ceci est vérifié par défaut et représente l'état initial de l'appareil au début de la pièce dans laquelle il a été placé. Normalement, vous voulez qu'il soit éveillé (c'est-à-dire: participer au monde de la physique) dès le début, mais parfois cela peut conduire à certaines instabilités et effets indésirables dus au démarrage brusque de la simulation physique. Pour éviter ces effets, vous pouvez décocher ce drapeau et l'instance sera créée avec le projecteur endormi, et il ne participera pas à la simulation de physique à moins que quelque chose n'agisse dessus.


Il y aura certaines instances dans un jeu basé sur la physique que vous voulez déplacer mais qui ne veulent pas être agi par des forces telles que la gravité, ni les forces engendrées par des collisions avec des objets dynamiques (pensez à déplacer des plates-formes dans un jeu de plateforme, par exemple ). Pour de tels objets, mettre simplement la densité de l'appareil à 0 signifiera que la physique supposera que l'objet est destiné à être statique et qu'il ne réagira à rien. Cependant, en cochant cette case, vous rendrez un objet statique cinématique et, bien qu'il ne soit pas affecté par les collisions et la gravité, il peut toujours être déplacé ou pivoté en utilisant les variables appropriées.


Lorsque vous cliquez sur le bouton Variables il va ouvrir la fenêtre objet Variables, que vous pouvez ensuite utiliser pour générer un certain nombre de variables avant l'événement Créer: Fenêtre Variables de l'éditeur d'objets

Dans cette fenêtre, vous pouvez cliquer sur Ajouter une nouvelle variable bouton pour ajouter une nouvelle variable à la liste. Vous pouvez ensuite nommer la variable ainsi que définir le type de variable à utiliser et ajuster ses propriétés: Nouvel éditeur d'objet

Le nom de la variable doit commencer par une lettre et ne peut contenir que des lettres, des chiffres et le symbole de soulignement '_' d'une longueur maximale de 64 symboles. Donc, les variables valides sont des choses comme fish, foo_bar, num1, et les variables invalides seraient 6fish, foo bar, ou *num. Une fois que vous avez donné le nom de la variable, vous devez définir son type, qui peut être l'un des suivants: Types de variables de l'éditeur d'objets

Il est à noter que cette fonctionnalité est particulièrement utile lorsque vous travaillez avec des instances parents / enfants - puisque vous pouvez avoir un objet parent avec un ensemble de variables définies puis simplement les modifier dans l'objet enfant (voir la section Variables objet et objets enfants plus de détails) - et lorsque vous ajoutez des instances dans l' éditeur de pièce (voir la section sur les couches> couche d'instance ), car vous pouvez également modifier ces variables pour les instances individuelles qui ont été placées dans la pièce.

Les différents types de variables que vous pouvez créer sont listés ci-dessous:

  • Réel: Un nombre réel est un nombre qui n'est pas entier et qui peut être positif ou négatif. Donc, 124,5, 45639,566546456, 0,9, -45,5 etc... sont tous des exemples de nombres réels. Tous les nombres réels sont stockés sous forme de valeurs à virgule flottante 32 bits, de sorte que vous pouvez rencontrer de légères erreurs d'arrondi lors de leur traitement. Notez que vous pouvez définir une plage de valeurs pour la sortie réelle à partir des options de variable (voir ci-dessous pour plus de détails).

  • Entier: Un nombre entier est un nombre entier et peut être positif ou négatif, par exemple 30004, 19, 0, -300. Notez que vous pouvez définir une plage de valeurs pour l'entier de sortie à partir des options de variable (voir ci-dessous pour plus de détails).

  • Chaîne: Une chaîne est tout ce qui a été placé entre guillemets doubles, par exemple "poisson", "Hello World" ou "12345".

  • Booléen: Un booléen est une valeur qui est soit true ou false. Dans la fenêtre Variables de l'éditeur d'objets, il s'agit simplement d'une boîte que vous vérifiez true et décochez pour false.

  • Expression: une expression est une expression mathématique qui peut contenir des nombres, des variables, des chaînes ou des fonctions GML ordinaires, ainsi qu'un ou plusieurs opérateurs. Par exemple sqrt(85 * 6) + 5.5 est une expression.

  • Ressource: Une ressource est simplement l'une des ressources que vous avez définies dans l'arborescence des ressources. Lorsque vous sélectionnez ce type de ressource, vous pouvez cliquer sur Open Asset Explorer pour ouvrir l'explorateur d'actifs et sélectionner la ressource dont vous avez besoin. Notez que vous pouvez définir des filtres pour les actifs affichés dans l'explorateur de ressources à partir des options de variable (voir ci-dessous pour plus de détails).

  • Liste: Sélectionner un type de liste d'entrée signifie que vous pouvez ensuite créer une sélection de valeurs (celles-ci peuvent être des chaînes, des réels, des expressions, etc.) dont vous pouvez ensuite choisir une ou plusieurs pour que la variable retourne. Pour définir les éléments qui vont dans la liste, vous devez d'abord les ajouter dans les options variables (voir ci-dessous pour plus de détails) et ensuite vous pourrez choisir l'élément comme valeur par défaut pour la variable dans la fenêtre principale de la liste menu bas: Menu Liste de l'éditeur d'objets Notez que si Multi-select est coché dans les options de liste (voir ci-dessous), la variable deviendra un tableau de toutes les options sélectionnées.

  • Couleur: Le type de couleur est pour vous de définir une valeur de couleur à stocker dans la variable. Vous pouvez entrer un nombre réel (de 0 à 16777216, cela aura une valeur alpha de 255), ou une valeur hexadécimale (au format $ RRGGBBAA), ou vous pouvez double-cliquer sur l'échantillon de couleur pour ouvrir le sélecteur de couleur et définir la couleur là.


Certains des différents types de variables vous donneront des options pour définir la valeur de sortie, et vous pouvez ouvrir ces options en cliquant sur sur le bouton:

  • Options réelles / entières: Options réelles de l'éditeur d'objets Les types de données réel et entier ont une option pour définir une plage de valeurs. Lorsque vous cochez cette case, vous pouvez entrer une valeur de départ et une valeur de fin. Au lieu d'avoir une valeur fixe affichée pour la variable dans la fenêtre Variables d'objet, vous aurez un curseur qui est fixé à ces valeurs: Plage de variables de l'éditeur d'objets

  • Options de ressources Options réelles de l'éditeur d'objets Les options de ressources s'ouvriront avec une liste de tous les types de ressources disponibles et, par défaut, elles seront toutes sélectionnées. Cependant, vous pouvez cliquer sur l'un d'eux pour sélectionner uniquement ce type, ou vous pouvez utiliser / + ou + pour sélectionner plusieurs types de ressources. Une fois que vous avez défini ceci, seul le type de ressource sélectionné sera visible dans l'explorateur de ressources pour la variable.

  • Options de liste: Options de variable de la liste de l'éditeur d'objets Ici vous pouvez ajouter les différentes valeurs que vous souhaitez inclure comme valeurs de retour possibles pour la variable de type liste. Vous cliquez simplement sur le Ajoutez le bouton Item List pour ajouter la nouvelle valeur (qui peut être une chaîne, real, integer, nom de ressource) puis dans la fenêtre Variables de l'éditeur d'objets, il apparaîtra dans la liste déroulante pour la valeur par défaut et vous pouvez sélectionner celui qui est requis: Liste de l'éditeur d'objets Liste des valeurs de variable Si vous avez coché l'option Multi-sélection, la liste déroulante contiendra des cases à cocher en regard de chacune des valeurs que vous voulez renvoyer par la variable liste (et la variable deviendra un tableau pour contenir chacune d'entre elles): Liste de l'éditeur d'objets Variable Valeurs multiples

Une caractéristique importante des variables d'objet est qu'elles sont héritées par les objets enfants que vous avez dans l'arborescence des ressources (voir la section sur les parents ci-dessus), ce qui signifie que vous pouvez choisir de les remplacer ou de les modifier si vous souhait. Lorsque vous créez un objet enfant d'une autre ressource objet dont les Variables sont définies, celles-ci s'affichent dans la fenêtre Variables de l'objet comme suit: Variable de l'éditeur d'objets dans un objet enfant

Vous pouvez voir dans l'image supérieure que l'objet Parent a quatre variables d'objet et dans l'image du bas, elles sont également affichées, seulement "grisées" et ont hérité du parent icône pour indiquer qu'ils ont été hérités. Ces variables héritées peuvent ensuite être modifiées si vous cliquez sur la variable Remplacer bouton, vous pouvez alors ajuster le curseur ou les valeurs, ou sélectionner différents éléments dans les listes, etc... Notez que lorsque vous modifiez une variable parente, vous ne pouvez modifier que la valeur définie, mais pas le nom, ni la variable options Notez également que vous pouvez également ajouter de nouvelles variables d'objet aux objets enfants (et dans l'exemple ci-dessus, vous pouvez voir que "Type de caractère" est une nouvelle variable d'objet uniquement pour l'objet enfant).

Si vous avez modifié une variable d'objet héritée, vous pouvez cliquer sur Supprimer bouton pour supprimer l'édition, mais pas la variable. La variable sera toujours héritée du parent, mais utilisera à nouveau la valeur par défaut du parent. Si vous devez supprimer complètement la variable, vous devez le faire à partir de l'objet parent.