42 Videos
238 Protokoll
Denken Sie daran: wir festgestellt hatte einen Schauspieler, der eine PlayerEntity. Wir müssen jetzt auf mehrere Dinge drehen. Zuerst ziehen Sie es. Ich sagte, dass wir hier ein Problem hatte, weil Box2D und Scene2D mit verschiedenen Dimensionen arbeiten. Box2D arbeitet in Metern und Scene2D in Pixeln. Ich, werde ich mit einer Zeichnung erläutern. Wir haben unseren kleinen Bildschirm. Wenn wir über Scene2D sprach ich Ihnen gesagt, dass der Bildschirm eine Höhe in Pixeln haben sollte. Beispielsweise 360.
Ich kann mich nicht daran erinnern, wie Skitch zu löschen. Ich werde 360 Pixel hoch erzählen. Und dann, wenn wir über Box2D sprach, sagte ich, dass die Höhe in Metern sein sollte, zum Beispiel Bildschirm 4 Meter. Also, wenn ich eine Box 1 Meter x 1 Meter ziehen müssen sehen ... wie dieses ist groß, aber vorstellen, dass ein Meter einnimmt. Das Problem ist, dass diese hoch genug sein sollte, um diese 360 Pixel sein. Der Bildschirm sollte beide 4 Meter und 360 Pixel messen.
Die einzige Möglichkeit, dies zu tun, indem sie 4 m = 360 Pixel, so dass eine Äquivalenz ist. Was zwingt uns, eine Umwandlung zwischen dem, Meter und Pixel. Dies ist einfach und wird durch eine Teilung gelöst: wenn 4 Meter 360 Pixeln, 1 Meter wird ... X Pixel. 360/4 = 90 So ist die Beziehung aufzubauen, Es ist, dass 1 Meter 90 Pixel. Wir müssen das wissen, weil wir Meter Box2D Pixel Scene2D umwandeln müssen, um es zu zeichnen.
Denken Sie daran, wir Leichen von 90 x 90 nicht schaffen können, denn das so große Objekte sein würde, die die Regeln der natürlichen nicht respektieren würde, dass wir schaffen. Aber während wir können nicht Spieler 1 Pixelgröße zu machen, weil wir nicht, so verwenden wir diese Gleichwertigkeit von Meter in Pixel zu konvertieren, oder Pixel Meter. Zu meiner Äquivalenzbeziehung erstellen, erstelle ich eine Klasse mit dem Namen Konstanten, wo ich eine Variable erstellen genannt PIXELS_IN_METER,
um anzuzeigen, dass ein Meter 90 Pixel. Und nun, wann immer Sie brauchen, um den Schauspieler zu positionieren oder die Größe, ich muss das Messgerät lesen ändern Box2D durch diese Konstante auf Pixel zu übergeben. Zum Beispiel werde ich die Größe Schauspieler passieren. Wenn die Box 1 Meter, es ist offensichtlich, dass seine Größe in Pixel es wird 1 * Constants.PIXELS_IN_METER sein. Sie könnten, dass * 1, setzen aber nicht notwendig zu sein scheinen. In der Tat werde ich eine statische Import zu tun, um diese Konstante zu verwenden.
Jetzt ist die Box 90 x 90 Pixel. Wie, wenn wir auf dem Bildschirm unsere Textur gehen zu ziehen, müssen wir die Position zu aktualisieren, damit wir wissen, wo Es muss der Körper von diesem Moment gezogen werden. Hier ist die gleiche. Ich muss sagen, dass seine Position body.getPosition sein wird (). X, y body.getPosition (). Y. Sie nicht, weil wir mit dem Umrechnungsfaktor zu übergeben es an Pixeln multipliziert, was uns interessiert. Und jetzt haben wir alles,
wir können auf dem Bildschirm tatsächlich ziehen, mit dem traditionellen Zeichenmethode. Lassen Sie uns ein letztes Verfahren machen, wie wir Fixture sind erforderlich, um zu beseitigen und den Körper, weil wir geschaffen haben, aber denken Sie daran, dass müssen beseitigt werden. Wir werden ein Verfahren genannt detach machen, um anzuzeigen, dass dies das Objekt in der Welt lösen. Und diese Methode adressieren beide Fixture zerstören, wie der Körper zu zerstören. Es ist wichtig, dass wir das Leben am Ende des Spiels nennen,
verschwinden. Nun, was ich tue, ist eine PlayerEntity schaffen, instanziiert es ... wir werden sehen, was ich dort gesagt, ruhig. Ich füge es auf die Bühne ... etwas, was ich in der Show zu tun (), in der Tat, immer getan. Im hide () Ich habe die Welt zu entkoppeln. Ich fordere auch entfernen (), um den Schauspieler Bühne zu entfernen. Und das ist alles. Was bleibt noch zu tun? Verbringen Sie eine Welt, eine Textur und eine Ausgangsposition, wird es sein, weil ich will, X 1 Meter und 2 Meter Position in der Y-Position
Ich berechne nur noch die Textur ... wie ich Texturen laden kann? Es gibt einfache Möglichkeiten Texturen zu laden, wie wir gesehen haben, mit dem Bauherrn. Aber es ist kaum brauchbar, weil jedes Mal, wenn ich eine Textur lade ich instanziiert werden soll. Gibt es nicht einen besseren Weg, dies zu tun? Ja da ist. Wir können AssetManagers verwenden, um Ressourcenauslastung zu zentralisieren.
Über den Autor
Biografie: Analyst-Programmierer in verschiedenen Sprachen. Tutor PREMIUM-Plattformen weltweit als CodigoFacilito anerkannt. Editor Cristalab Artikel. Mein YouTube-Kanal wird von der ANAYA und LaTostadora Verlag gefördert. Ich mag im Detail und geben einige Beispiele für die Vermeidung von Missverständnissen zu erklären.