Jeder Feindtyp in meinem Spiel ist eine andere Klasse und die Instanzen werden in einem C-Array gespeichert. Im Hauptspiel wird loop update() für jede Gegner/Item Instanz ausgeführt, und draw() wird ausgeführt. Einige der update() - Befehle erfordern Kenntnisse darüber, wo sich der Hauptspieler befindet. Was wäre der beste Weg, um diese Informationen an die Instanz zu senden? Ich denke nicht, dass eine globale Variable der schlaue Weg ist, dies zu tun, da Multiplayer-Optionen später hinzugefügt werden können.Wie sollte ich meine Spieleinheiten über die Dinge in ihrer Umgebung informiert wissen?
Dies ist nur ein Beispiel für das größere Problem, wie Dinge im Spiel über einander wissen sollen. Wie würden Feinde wissen, dass sie zum Beispiel mit anderen Feinden kollidieren?
Ich denke, ich weiß es nicht besser. Was sollte ich stattdessen verwenden? – Jameson
Ein Array ist für die Speicherung der Entitäten geeignet. Bei einer Kollision können Sie eine andere Struktur (ein Weltgitter) haben, in der jede Zelle jede Entität darin auflistet. Auf diese Weise müssen Sie nicht jede Entität gegen jede andere Entität testen. – Nosredna
Es kommt darauf an ;-) Wie viele Entitäten sprichst du, welche Operationen wirst du ausführen und gibt es eine Möglichkeit den Raum irgendwie zu partitionieren, so dass es einfach ist zu bestimmen, welche Entitäten du überprüfen musst. Unabhängig davon können Sie immer mit einfachen Arrays beginnen und dann zu einem anderen Mechanismus umgestalten, solange Sie Methoden haben, die eine Abstraktionsschicht bilden, zB: bool entity.IsCollision() {für jede Entität e in this.controller.entities {if (e ! = dieses && e.IsIntersecting (this)) gibt true zurück; } falsch zurückgeben ; } Dies kann so umgestaltet werden, dass es keine lineare Suche ist. –