42 Videos
238 Protokoll
Lassen Sie uns über Kollisionen sprechen, weil ich natürlich daran interessiert zu wissen, dass meine Spieler von einem der Spikes getroffen wurde. Das erste, was ich tun muss ist für auf eine Sache, die die Stage-Klasse hat die Grenzen der Objekte und Debug-Modus zu erhalten. Ich werde zeigen, wie Debug-Modus einzugeben, um siehe im Detail die Schauspieler, die wir auf der Bühne haben, und Sie werden verstehen, warum. Zuerst rufe ich setDebugAll Methode, um anzuzeigen, dass, wenn wir laufen
zeigen die Kanten von Objekten. Wenn wir wahr passieren, die Kante jedes Objekt in einer Zeile, die den Schauspieler wird angrenzen, so dass wir Ihre Grenzen angezeigt. Benötigen Sie arbeiten, um die Akteure einige Größen zu geben, und wir nicht getan haben, habe ich Positionen nur gegeben. Das erste, was ich tun werde ist geben die Abmessungen des Darstellers. Und das kann ich direkt vom Hersteller, da die Texturen und TextureRegions haben Methoden für
die Breite und die Höhe der Textur, und es ist perfekt für mich, meine Schauspieler zu sagen: 'Hey, deine neue Größe (mit setSize) ist pinchos.getRegionWidth () . Für die Breite der Region, und pinchos.getRegionHeight (), zu erhalten hoch 'So wissen wir, wie groß die ActorPinchos: die Messung der Textur. Mit ActorJugador ist die gleiche. Das, was Sie wissen, weil ich es in den ersten Videos tat: getWidth () und getHeight ().
Das mit diesem anderen kombiniert werden, weil wir seine Dimensionen benötigen, erlaubt es uns, direkt diese grüne Kante jetzt um zu sehen gehen zu erhalten unseren Charakter. Mit dieser mehr oder weniger das, was wir tun können, um zu bestimmen, wo die Grenzen sind, und wird uns helfen, zu sehen, wie wir erkannt wird machen können wenn es hat eine Kollision gewesen. Ich werde meine Skitch zurückkehren zu verstehen, wie ich Kollisionen verwalten wird. Es gibt bessere Möglichkeiten, sie zu verwalten, und bald
Lassen Sie uns sehen, wie wir die Einführung beginnen Box2D, eine sehr interessante Technologie, die uns realistische Physik, um das Spiel hinzufügen können, und wie man besser eine Kollision erkennen erhalten. Im Moment werden wir untersuchen, wie einen einfachen Algorithmus zu erhalten, Mund zu öffnen für später. An dieser Stelle können wir unsere Schauspieler zu einem Quadrat zu reduzieren. Alle Akteure in der Tat. Wir haben einen Spieler und einen Spieß.
Was uns interessiert, ist zu erkennen, wenn dies geschehen ist: das heißt, wenn die Spitzen mit dem Schauspieler kollidierte haben. Anscheinend gibt es eine einfache Möglichkeit, um zu sehen, wenn wir treffen; und hier haben wir diese vertikale Linie, die zu der X-Position des Spielers würde entspricht. Wenn wir sagen, setX () es wir zeigen, wo es diese Zeile bekommt, weil der Ursprung der auf der linken Seite angezeigt koordinieren. Wir wissen, was breit ist der Schauspieler,
so ist es leicht, den rechten Rand eine Summe von X + WIDTH, um zu bestimmen machen. Ebenso können wir den linken Rand unserer Spieße erhalten Verwendung von X in dem Fall der Spieße. Wenn eine Kollision auftritt, geschieht eine interessante Sache: die Kollisionen auftreten, weil die linke Kante unsere ActorPinchos ist mehr nach links, das heißt der X im Wert von weniger als der Wert von X + Breite von Spikes. Wenn wir einen Vergleich zwischen pinchos.x machen
und (jugador.x + jugador.width), was geschieht, ist, dass eine Kollision vorliegt, da der erstere kleiner ist als der zweite. Wenn diese Bedingung wahr ist, gibt es eine Kollision, weil die Spitzen buchstäblich innerhalb des Players sind. Dies ist die erste Strategie Kollisionen zu erfassen. Mit Hilfe der Render-Methode vor draw () aufrufen, ein Methodenaufruf genannt comprobarColisiones (), die jetzt schaffen. Es besteht eine gewisse Diskrepanz gegen
wenn zu aktualisieren und gezogen. Lasst euch nicht täuschen: immer Actualizad vor dem Zeichnen. Denn wenn Sie es nicht tun, wenn Sie es in die andere Richtung zu tun um, das heißt, erste meteis die draw (), haben Sie ein Problem, weil die Kollisionen nach der Ausführung der Tat überprüft werden (), und der Akt () nicht das sein der Spieler beobachtet. Da die draw () wurde durchgeführt, bevor der Spieler nicht wahrnehmen. Und in Spiele, die viel Bewegung haben dieses Problem,
so würde zuerst die Updates und Kontrollen zu tun und schließlich, wenn alles fertig dibujadlo ist. Vor allem mit Box2D, wird dies sehr wichtig sein. Das letzte, was ich tun werde ist die comprobarColisiones schreiben () -Methode, um zu überprüfen, was ich gesagt habe. Wenn der rechte Rand meiner Spieler ist größer als der linke Rand meiner Spikes, ist, weil es eine Kollision hat. Gute Zeit, um den Spieler zu töten, im Grunde. Le Ich kann einen Zustand versetzt
es ist lebendig, und durch einen Getter und Setter kann ich ändern oder zu überprüfen, ob mein Player am Leben ist oder nicht. Nun, was ich tue, ist schließlich, dass, wenn der Spieler am Leben und er hat kollidierte, Kollision gedruckt. Ich möchte, dies zu tun, denn wenn nicht, während die Nachrichtenkollision die Spikes in Bewegung sind, gefolgt es Dutzende Male angezeigt. Sein gut zu beenden ist die setAlive nicht wieder wahren Wert falsch gemacht wird. Dies ist zu vermeiden Druck
oft die Nachrichtenkollision. Dies ist eine etwas grobe und schmutzige Art und Weise, sondern ermöglicht durch ein mathematisches Modell überprüft ... - gut. Ich werde sehen, warum es nicht funktioniert. Vielleicht, weil Sie vergessen haben, dies zu setzen. Das stimmt. Verzeihen Sie dieses Detail: Wenn Sie das Spiel starten, die Live-Start. Ja jetzt. Er sagte, dass durch geometrische Grundmodelle wie Rechtecke können wir sehen, wenn es eine Kollision gegeben hat. Diese Technik wird als Begrenzungsboxen genannt.
Es ist nicht die beste Technologie zu überprüfen Kollisionen, aber einfache 2D-Spiele ist. Doch mit Box2D wir haben ein besseres System physisch zu integrieren.
Ü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.