demo vectoriel
Collision Vectorielle Love 2D
Stormbringer Il y a 2 ans Premium Pro - Adhésion à vie0

Bonjour à tous et à toutes,

Cela fait bien longtemps que je n’ai pas poster un devlog, non pas que j’ai abandonné gamecodeur, ou le code, bien au contraire, mais j’explore d’autres horizons, notamment le dev web avec js, et react.

Le besoin :

Bref, voici un petit bout de code que j’ai développé pour un projet professionnel, mais qui peut facilement être utile pour du jeux.

Il s’agit de détecter des collisions sur des formes polygonales concaves fermées. Le besoin était ici de pouvoir détecté si la souris entrait dans un espace « complexe », c’est à dire un espace non rectangulaire ou circulaire.

De plus, il devait être possible d’avoir plusieurs formes indépendantes mais appartenant au même objet graphique, donc avec des zones de détections bien distinctes.

Le principe technique :

J’ai créer un premier objet Vector(point départ, point arrivé) qui permet de réaliser des opération de base sur un vecteur est renvoie également des infos sur ce vecteur : position, angle, longueur, …

J’ai ensuite créer un objet CollideShape({{points forme 1}, …, {points forme n}}, positionX, positionY). Cet objet lit les tables qui lui sont passée en argument et créé des listes équivalentes de vecteur avec l’objet précédent.

Enfin, un petit coup de math vectorielle (un produit scalaire) calcule si la pointeur de souris est à gauche  ou à droite de chaque vecteur. A noter que les formes vectorielles doivent être construites dans le sens trigonométrique. Il n’est pas utile de fermer la forme en spécifiant le premier point entré comme dernier point car l’outil ferme automatiquement la forme.

Le résultat :

Est voici le résultat en image :

demo vectoriel
démonstration de collisions avec des formes complexes

Je n’ai pas mis de source sur itch ou github. Si quelqu’un est intéressé, faite le moi savoir et je posterais les sources.

Bon code à tous.

A++

Stormbringer

Laisser un commentaire

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.