Carrelage physique à l'aide de Farseer


9

J'ai un problème avec le Farseer Physics Engine, où dans un environnement carrelé, mon objet va parfois interagir avec les coins d'autres objets, même s'ils s'alignent parfaitement.

Carrelage physique à l'aide de Farseer

J'ai lu des gens suggérant que vous calculiez et créiez un objet plus grand, en utilisant Marching Squares ou quelque chose de similaire. Cependant, ce n'est pas une option, car j'aimerais que chaque carreau ait des qualités physiques différentes, comme une friction et une restitution différentes.

Ma question est, qu'est-ce qui en est exactement la cause, est-ce un problème de précision du flotteur ou autre chose? Et y a-t-il un moyen de le réparer, sans casser tout le moteur physique?


Je me demande si vous pourriez simplement agrandir les boîtes de collision d'un pixel, afin qu'elles se chevauchent un peu. Il peut voir la surface comme plus connectée peut-être.
Doug.McFarlane

@Doug: Je viens de tester cela, et cela n'a fait aucune différence.
William Mariager,

Les carreaux de sol sont-ils des corps statiques?
bummzack

@bummzack: Oui, ils le sont.
William Mariager

J'ai exactement le même problème. J'obtiens l'effet "rebondir" lorsque mon objet mobile est un rectangle ou un cercle. Je ne peux pas non plus convertir plusieurs carrés en un seul grand rectangle car je veux que le joueur ait la possibilité de "supprimer" des tuiles individuelles dans certaines situations.

Réponses:


5

Farseer utilise un solveur itératif, donc lorsque votre roue commence à entrer en collision avec un autre rectangle à grande vitesse, vous verrez de temps en temps des bosses car c'est un "alignement parfait" pour nous, pas une simulation physique, avec des itérations des choses comme celles-ci vont ne soyez jamais "pixel-perfect".

Vous devrez convertir des rectangles en formes Edge / Loop, puis modéliser différentes qualités physiques avec des hacks comme la création de limites de tuiles artificielles, puis la modification des propriétés lorsque le personnage entre dans une zone de délimitation, mais toutes les qualités physiques ne peuvent pas être émulées de cette façon.

Tôt ou tard, vous finirez par écrire votre propre physique basée sur les tuiles au lieu de Farseer. Si votre jeu n'a pas beaucoup d'énigmes physiques complexes, il sera plus simple d'abandonner complètement Farseer et de lancer votre propre physique basée sur les tuiles.


En fait, j'ai commencé à coder mon propre moteur physique, spécifiquement pour ce moteur de mosaïque, car il ne semble pas y avoir de solutions élégantes.
William Mariager

J'ai décidé de marquer cela comme la réponse, car il ne semble pas y avoir de solution simple, et vous feriez mieux de coder votre propre solution. Ou acceptez que vous ne pouvez pas avoir une physique différente et utilisez Marching Squares pour faire des corps plus grands.
William Mariager

0

vous pouvez optimiser vos formes de collisions, cette scène peut se faire avec seulement quatre rectangles.

vous pouvez joindre des cases corrélatives pour en agrandir une.

cette vidéo le montre http://www.youtube.com/watch?v=eyhGckHgkkE

quand il ajoute des boîtes, vous pouvez voir un rectangle bleu clair avec la forme optimisée.


1
Comme je l'ai dit dans le troisième paragraphe, transformer un groupe d'objets en un objet plus grand n'est pas une option, car je perdrais des propriétés individuelles.
William Mariager

vous pouvez également les regrouper en fonction de leurs propriétés physiques. Je pense que ce n'est pas très courant d'avoir beaucoup de blocs physiques différents ensemble.
Blau

Les regrouper par qualités physiques me poserait le même problème si le terrain change beaucoup sur un tronçon. C'est peut-être inhabituel, mais c'est néanmoins ce dont j'ai besoin.
William Mariager

0

Hmm ... Je soupçonne que cela pourrait avoir quelque chose à voir avec votre cercle et non avec les tuiles en dessous. Essayez de faire le sol à l'aide d'une seule coque et voyez si vous obtenez les mêmes résultats. Sinon, ce sont les tuiles comme vous le pensez. Si c'est le cas, votre cercle n'est pas aussi rond que vous pourriez le penser.


Je l'ai testé. L'utilisation d'un seul grand rectangle ne pose aucun problème.
William Mariager

k, Les tuiles sont le problème alors
John McDonald
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.