2010-12-06 11 views
2

Ich versuche, ein "faires" Kollisionserkennungssystem für ein 2D-Sprite-Spiel zu erstellen, aber ich finde es schwieriger als ich ursprünglich erwartet hatte. Mit "fair" meine ich, dass keinem beweglichen Objekt bei einem einzigen Spielupdate Priorität gegenüber einer anderen Priorität gegeben wird:Fair 2d Spiel Bewegung Kollision Schiedsverfahren

z. A -> 50px < -B

Was Greedy-Algorithmus im Gegensatz (wenn b und gleichen Geschwindigkeiten haben, sie sollten jeweils bewegen 25pix vor kollidiert und Stoppen), die nur ein erster bewegen könnte, und kündigen dann Bs Bewegung, weil A schon da ist.

2 Fälle sind recht einfach zu handhaben, aber es treten Probleme auf, wenn mehrere Objekte kollidieren.

z. B. (nur angezeigte Geschwindigkeiten).

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

Wo A, B, und C-Objekte all verschiedene Größen

Grundsätzlich werden können, ich bin auf der Suche nach Ideen, wie dieses Problem zu nähern. Mein derzeitiger Ansatz ist zu kompliziert geworden, und ich bin daran interessiert, einige andere Ansätze zu diskutieren, an die ich nicht gedacht habe.

+1

Haben Sie darüber nachgedacht, Ihre Frage im neuen Abschnitt von Stack Overflow zu posten, http://gamedev.stackexchange.com/? –

Antwort

1

Wenn Sie etwas bewegen und dann auf eine Kollision prüfen, wie Sie sagen, wird es nie fair sein. Warum also nicht alles verschieben, und während der Bewegung einer Entität, wenn es eine Kollision gibt, kennzeichnen Sie sie als solche. Sobald Sie fertig sind, alles zu verschieben, können Sie sich alle Kollisionen anschauen und entscheiden, was als nächstes zu tun ist, basierend auf allen (z. B. bewegen Sie alle gleich weit weg, so dass sie nicht länger kollidieren).