Nehmen Sie zum Beispiel ein einfaches Sidescrolling-Spiel. Während sich der Spieler zur Seite bewegt, schwenkt die Kamera, um ihnen zu folgen. Das heißt, wo Objekte in der Welt sind, entspricht nicht unbedingt dem, wo sie sich auf dem Bildschirm befinden, da sich der Bildschirm und die Welt relativ zueinander bewegen.
Hier ist ein Beispiel: Sagen Sie, Ihr Bildschirm ist 100px * 100px Quadrat (aus irgendeinem Grund). Sie platzieren ein Objekt an der Position (50, 0), so dass es jetzt in der Mitte und am unteren Bildschirmrand ist. Jetzt sagen Sie, dass Sie Ihren Spieler nach rechts bewegen, und der ganze Bildschirm schwenkt, um dem Spieler zu folgen. Dies bedeutet, dass das Objekt, das Sie zuvor platziert haben, nach links auf dem Bildschirm verschoben werden sollte. Also ist es immer noch bei (50, 0) in der Welt, da es sich relativ zum Rest der Szenerie nicht wirklich bewegt hat, aber es sollte nun auf (sagen wir mal, 10, 0) auf dem Bildschirm gezeichnet werden, seit welchem Teil Von der Welt hat sich der Bildschirm verändert. Dies ist der Unterschied zwischen "worldspace" (wo ein Objekt in der Welt ist) und "screenspace" (wo das Objekt auf der tatsächlichen Anzeige gezeichnet wird).
Wenn Sie versuchen, mit einer SpriteBatch
zu zeichnen, geht es standardmäßig davon aus, dass die Koordinaten des Weltraums den Bildschirmkoordinaten entsprechen: Wenn Sie "draw at (50, 0)" sagen, wird das Objekt gezeichnet (50, 0) auf dem Bildschirm. Selbst wenn sich die Kamera bewegt, wird sie immer auf (50, 0) auf dem Bildschirm zeichnen. Wenn die Kamera schwenkt, folgt das Objekt und bleibt an der gleichen Stelle auf dem Bildschirm hängen.
Da Sie in der Regel, dass nicht wollen, geben Sie die SpriteBatch
eine Projektionsmatrix, die eine Transformationsmatrix ist, die, wie Bildschirm nicht zu konvertieren sagt Koordinaten Koordinaten zu Worldspace, und umgekehrt. Auf diese Weise kann man, wenn man dem Batch "draw at (50, 0)" sagt, die von der Kamera erhaltene Matrix betrachten und sehen, dass (50, 0) in der Welt tatsächlich bedeutet, 10, 0) auf dem Bildschirm, und es wird Ihr Sprite an der richtigen Stelle zeichnen.
Große Erklärung. –