Frage
Ich bin vor einem Problem, das wahrscheinlich in Game-Design sehr häufig ist.
- Nehmen wir an, dass wir eine 2D-Welt haben
- Die Größe der Welt ist M x N rect
- Die Welt kann einige Elemente enthalten, die in es
- Die Einzelteile haben (x, y) Koordinaten
- Die Welt kann über ein Fenster durchsucht werden, die physisch (m x n) groß ist.
- Das Browser-Fenster kann in / out gezoomt
- Die Browser-Fenster verrissen werden kann / unten links + rechts, während in den Ausmaßen der Welt rect.
Wie soll ich mich über diese umzusetzen? Ich bin vor allem über die Browser-Fenster betroffen. Kann jemand eine gute liest empfehlen?
Dies ist keine Hausaufgaben - es ist eher eine Aufgabe, die ich mir gesetzt habe abzuschließen
.Lösung
Andere Tipps
Implementieren Sie es, wie Sie Google Maps mit speziellen Markern implementieren würde.
Grundsätzlich zuordnen Sie einen rechteckigen Teilmenge von einem Bereich zum anderen Rechteck, das heißt. die Browser-Fenster. Dies ist im Wesentlichen nur zwei Operationen - eine der Übersetzung, die Sichtfläche in der Welt zu positionieren und dann eine der Skalierung, dass beliebigen sichtbaren Bereich zu nehmen und es in das Fenster skalieren. Trennen Sie zu, dass die Frage der Ein- und Auszoomen, die im Wesentlichen die Größe des betrachteten Bereichs zu verändern.
In der Entwicklung von Spielen gibt es mehr Möglichkeiten, dies zu nähern. Im Allgemeinen würden Sie einen Blick Projektion anpassen, wie viel von der Welt zu zeigen, wie Sie benötigen (dh. Transformation von Weltkoordinaten in Koordinaten sehen, in der Regel eine orthographische Projektion) und einfach die Welt oder Ansicht übersetzen, um das Ansichtsfenster zu platzieren, so dass es zeigt auf, was Sie sehen wollen. Sofern Sie die Positionen der Objekte festgelegt haben, richtig die 3D-Hardware zeichnen, was Sie erwarten.
Möglicherweise können Sie mit DHTML wegzukommen, aber Flash oder Silverlight wäre viel einfacher, etwas zu implementieren.
Werfen Sie einen Blick auf den Code hinter google maps für einige Inspiration . Sie tun somthing ähnlich dem, was Sie in reinem HTML wollen.