Bonjour, mon fils aime tout ce qui tourne évidemment surtout les engrenages, donc il m’est venu a l’idée
de lui construire un tel système… au secoure
Voici l’idée.
Ça prend un engrenage primaire qui tourne par défaut et qu’il peut bouger dans l’écran, il aurait la possibilité
d’intégrer d’autre engrenage statique, mais déplaçable, mais une fois qu’il colle son engrenage primaire sur celle-ci elle se met à tournée également. Vous voyez le principe.
A priori c’est simple, mais doit être complexe a concevoir, j’ai deux objets de type spirite, une forme ronde et l’autre un engrenage simple donc chaque engrenage doit être fixé au spirite rond il se doit d’être solide et permet une collision.
Je ne voudrais pas être oublier de dupliquer une quantité phénoménale d’événements… donc dupliquer l’objet ou instancier l’objet engrenage serait envisageable avec ses événements… donc quelqu’un peu me mettre sur la bonne piste a procédé ou exemple de départ ?
Je ne sais pas si ça répond parfaitement à la demande, mais voilà au plus simple comment 2 objets engrenages peuvent tourner.
1 seule image utilisée dans 2 objets, 2 événements sans conditions : 1 “tourner avec un angle de 15°” 2 “tourner avec un angle de -15°”.
De là tout est possible mais c’est très “statique”, je n’utilise pas de physique pour par exemple faire tourner plusieurs engrenages de taille différentes… Il faudrait faire un peu de math pour arriver à ce résultat !
Le moteur physique de GD n’est pas assez évolué pour des formes et des intéractions aussi complexes que des engrenages. Déjà testé avec Unity3D et c’était un vrai casse-tête.
Le plus simple pour moi est de feinter le joueur.
On a un engrenage central.
Quand un sprite engrenage est en collision avec un engrenage déjà posé, le premier récupère le sens de rotation du second et tourne selon sa propre vitesse dans le sens opposé.
On peut ainsi enchainer plusieurs sprites engrenage, qui vont tourner chacun dans leur sens, et à leur vitesse propre (variable d’objet “vitesse” propre à chaque taille de rouages).
Il faudra surement créer des masques de collisions hexagonaux, légèrement plus grands que l’image du sprite, afin que la collision soit détectée, et que l’engrenage continue de tourner.
Ensuite, il faudra gérer l’enchainement des rouages.
Genre avec une variable “position” qui indiquera la position du rouage dans la chaine de rouages, où 1 serait le rouage central.
Si on retire un rouage, tous les rouages en collision de valeur “position” supérieur s’arrêtent de tourner.
Si on rajoute un rouage, on ajoute valeur du rouage en collision + 1. Et on vérifie les rouages deux par deux, réactivant les rouages dont la valeur position est supérieure, s’ils sont en collision avec un rouage de position inférieure.
L’association d’objets (une chaine de rouage parent/enfant) pourrait simplifier cet algorithme.