2017-08-15 5 views
0

Je viens de commencer à porter mon jeu sur slick2d et je veux que mes entités entrent en collision les unes avec les autres.
Je sais que shapeA.intersects(shapeB) vérifie si deux formes se croisent mais je veux qu'elles se chevauchent afin qu'elles ne puissent pas se chevaucher.
Je serais facile si les formes n'étaient que des rectangles mais ce n'est pas le cas.
Alors, y a-t-il un moyen d'effectuer cela efficacement?Empêche les formes de se coller les unes aux autres

Répondre

0

J'espère avoir bien compris votre question.

Pour ce faire, vous devez mettre en place une collision avec votre jeu. Une approche pour accomplir ceci serait de supposer que votre forme est par exemple x coordonne une tête de sa position actuelle. Cela signifie que vous devez toujours vérifier si deux formes se croisent lorsqu'elles bougent, si elles se croisent au mouvement suivant, elles ne sont pas autorisées à déplacer une tête, sinon elles se croiseraient ou entreraient en collision. Vous pouvez adapter complètement cette approche à vos besoins, par exemple, vous pouvez les laisser entrer en collision, puis les rétablir afin qu'ils ne soient pas coincés les uns dans les autres.

Il y a beaucoup de tutoriels concernant ce sujet et différentes approches, vous devriez les vérifier.

+0

J'ai trouvé une solution. J'ai écrit un gestionnaire de vélocité qui calcule la relation entre la vitesse x et y et crée une taille de pas dans laquelle les formes se déplacent. Le gestionnaire vérifie après chaque étape s'il croise une autre forme. Si c'est le cas, le poste est réinstallé à la dernière étape. –

+0

Super que vous avez trouvé une solution :) –