Réflextion à propos des événements sur les objets


#1

Je relance un sujet en français pour la gestion des événements sur les objets pour échanger avec d’autres utilisateurs.
Le sujet en anglais.

Actuellement les objets peuvent avoir des comportements.
Vous pouvez définir des événements qui agiront sur l’objet.
Mais à plusieurs exceptions ennuyeuses et insolvable.

  • Une utilisation impossible des détections de touche du clavier ou d’autres type d’instructions globale.

  • Une utilisation très très (trop) complexe des comportements pour créer un objet depuis un comportements d’objet.
    (Ajouter une custom function “method” dans le comportement, puis appeler cette custom function dans les événements de scène, puis enfin depuis les autres méthode de cycle du comportement appeler encore la custom function, le tout en ayant passé un paramètre d’objet à la custom function et de l’avoir défini dans l’action de la scène et d’avoir ajouter le paramètre à la function)

  • L’impossibilité d’accéder depuis un comportement aux propriétés d’un autre comportement sur le même objet.
    Plus globalement un objet “Player” avec un “PlatformerObject”. Depuis les conditions dans un comportement il n’est pas possible d’avoir les conditions “Is falling” de cette objet.

Une possibilité serait de créer un comportement sur l’objet depuis la liste des objets.
Le comportement agirait comme les événements externe, les événements externe proposent un choix de scène pour savoir où sont les objets à prendre en compte.
Ici avec cette nouvelle possibilité, la scène à prendre en compte est la scène actuelle et l’objet est passé directement au comportement ce qui autoriserais les instructions des autres comportements comme le “PlatformerObject” dans les instructions à l’intérieur du comportement.

Comme il y aurais un conflit entre les deux types de comportements, le systeme actuel serait appelé “Shareable behavior”, puis le nouveau “Object Behavior”.
“Shareable behavior” est indépendant, il peut être partager.
“Object Behavior” serait lié à un/des objet(s) du jeu. Non partageable à l’export de l’extension.
A ce propos il deviendrais nécessaire de mettre un avertissement pour dire que des “Object Behavior” sont présent.

Ceci nécessiterais une adaptation de l’interface dans les extensions pour prendre en compte l’objet et la scène.

Ce qui pourrait être adapté:
A la création d’un comportement, un choix est proposé.

  • Gardé le fonctionnement du comportement comme il est présent actuellement dans GD.
  • Choisir une scène parent et un ou des objets sur lesquels seront appliqué le comportement.

Et alors l’option depuis la liste des objets devient un raccourci qui lie automatiquement la scène et l’objet au comportement.

Prenons l’exemple d’un comportement d’objet sur un objet Chien, plusieurs instances sont présente sur une scène.
Je souhaite que lorsque je presse la touche gauche, l’objet (Chien) se déplace vers la gauche.
Comme j’ai plusieurs instances, toutes les instances de Chien se déplacerons.

Ensuite j’ai un événements pour quelques Chien:
Si la variable d’objet “isRunning” de Chien = true, alors déplacer Chien 2x plus vite.
Dans ce cas on loop toujours sur tout les Chien présent sur la scène et comme il y a la condition de la variable le moteur de jeu sélectionne uniquement les instances qui répondent à la condition. (En soit comme dans les événements classique.)

Un autre exemple, un objet Player, ce dernier à dans sont “Object Behavior” :
La touche Space est préssé, alors créer un objet rocket à la position x;x
Et en sous événement mettre une force vers une direction.