/ / Fair 2d arbitrage de collision de mouvements de jeu - 2d, détection de collision

Arbitrage de collision entre deux mouvements - 2d, détection de collision

J'essaie de créer une détection de collision "juste"système pour un jeu de sprite 2d, mais je trouve cela plus difficile que je ne le pensais initialement. Par "passable", je veux dire qu'aucun objet mobile n’a la priorité sur le mouvement par rapport à un autre lors d’une mise à jour de jeu unique:

par exemple. A -> 50px <- B (si b et a ont des vitesses égales, ils doivent se déplacer de 25pix avant la collision et l’arrêt)

Contrairement aux algorithmes gloutons, qui pourraient simplement déplacer A en premier, puis annuler le mouvement de B parce que A est déjà là.

Deux cas sont assez faciles à gérer, mais je rencontre des problèmes lorsque plusieurs objets entrent en collision.

par exemple (uniquement les vitesses indiquées).

     B
|
|<--C
A--> v

Où les objets A, B et C peuvent tous être de tailles différentes

En gros, je cherche des idées sur la façon deaborder ce problème. Mon approche actuelle est devenue trop compliquée et je voudrais discuter d'autres approches auxquelles je n'aurais peut-être pas pensé.

Réponses:

1 pour la réponse № 1

Si vous déplacez quelque chose et que vous recherchez une collision, comme vous le dites, cela ne sera jamais juste. Alors, pourquoi ne pas bouger? toutet lors du déplacement d'une entité, s'il y a uncollision, le signaler comme tel. Une fois que vous avez fini de tout déplacer, vous pouvez consulter toutes les collisions et décider quoi faire en fonction de chacune d’elles (par exemple, déplacez-les toutes à la même distance afin qu’elles ne se touchent plus).