2010-12-06 68 views
2

Je suis en train de créer un système de détection de collision « juste » pour un jeu de sprite 2D, mais je trouve qu'il est plus difficile que ce que je pensais au départ. Par « juste », je veux dire qu'aucun objet mobile est une priorité de mouvement sur une autre sur une seule mise à jour du jeu:mouvement de jeu équitable 2d arbitrage de collision

par exemple A -> 50px < -B (si b et ont des vitesses égales, chacun doit se déplacer 25pix avant entrer en collision et l'arrêt)

Contrairement aux algorithmes gloutons, ce qui pourrait simplement déplacer un premier, puis annuler B mouvement parce que A est déjà là.

2 cas sont assez faciles à manipuler, mais je suis en cours d'exécution dans des problèmes quand j'ai plusieurs objets qui entrent en collision.

par exemple (vitesses seulement représenté).

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

Où A, B et C des objets peuvent être toutes différentes tailles

Fondamentalement, je suis à la recherche d'idées sur la façon d'aborder ce problème. Mon approche actuelle est devenue trop compliquée, et je suis intéressé à discuter d'autres approches auxquelles je n'aurais jamais pensé.

+1

Avez-vous envisagé poster votre question sur la nouvelle section de débordement de la pile, http://gamedev.stackexchange.com/? –

Répondre

1

Si vous déplacez un, puis de vérifier lors d'une collision, comme vous le dites, il ne sera jamais équitable. Alors pourquoi ne pas déplacer tout, et tout en déplaçant une entité, s'il y a une collision, marquez-la comme telle. Une fois que vous avez terminé de tout déplacer, vous pouvez examiner toutes les collisions et décider de la prochaine action en fonction de chacune d'entre elles (par exemple, déplacez-les toutes de manière égale afin qu'elles ne se heurtent plus).