Inhaltsverzeichnis
PixiJS-Setup mit Vite und TypeScript
Herr. Linxed ・ 20. April
Erreichen Sie mehr mit dem „Cult of Done“
Herr. Linxed ・ 18. Februar
Heim Web-Frontend js-Tutorial Space Defender – vertreibe die Feinde

Space Defender – vertreibe die Feinde

Jul 21, 2024 am 09:02 AM

Im letzten Teil haben wir das Schiff des Spielers erstellt und es in Bewegung gesetzt. In diesem Teil erstellen wir die Feinde und bringen sie in Bewegung. Und dann schießen wir sie ab!

Die Feinde erschaffen

Wir werden etwas Ähnliches tun wie bei der Erstellung der Kugeln. Wir werden eine Feindvorlage erstellen, die wir jedes Mal klonen, wenn wir einen neuen Feind erstellen möchten. Wir müssen die Feinde auch über ein Array im Auge behalten, da es mehr als einen gleichzeitig geben kann.

Aber zuerst erstellen wir die Methode, die den Feind erschafft. Fügen Sie den folgenden Code nach der createBullet-Methode hinzu:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

let enemyTemplate: PIXI.Graphics | undefined = undefined;

function createEnemy() {

    if(!enemyTemplate) {

        enemyTemplate = new Graphics();

        enemyTemplate

            .poly([

                0, 0,

                50, 0,

                25, 25,

            ])

            .fill(0xFF6666);

    }

 

    const enemy = enemyTemplate.clone();

    enemy.x = 25 + (Math.random() * 480) - 50;

    enemy.y = -50;

 

    return enemy;

}

Nach dem Login kopieren

Wie Sie sehen können, ist es der Methode createBullet ziemlich ähnlich. Wir erstellen eine Feindvorlage, die wir jedes Mal klonen, wenn wir einen neuen Feind erstellen möchten. Anschließend positionieren wir den Feind an einer zufälligen x-Position oben auf dem Bildschirm. Der Feind hat die gleiche Form wie das Schiff des Spielers, ist jedoch rot und steht auf dem Kopf.

Wir geben den Spawn-Standort des Feindes an, indem wir die x- und y-Eigenschaften festlegen. Die x-Eigenschaft wird auf einen zufälligen Wert zwischen 25 und 480 – 50 gesetzt, sodass sich der Feind immer innerhalb des Spielbildschirms befindet. Die y-Eigenschaft ist auf -50 eingestellt, sodass sich der Feind direkt außerhalb des Bildschirms befindet und sich hineinbewegt.

Als nächstes müssen wir diese Methode aufrufen, um alle paar Sekunden einen neuen Feind zu erstellen.

Feinde hervorbringen

Wir verwenden hierfür die setInterval-Methode. Fügen Sie den folgenden Code direkt nach der Definition des Aufzählungszeichen-Arrays hinzu:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

const enemies: PIXI.Graphics[] = [];

 

const enemySpawnInterval = 2500;

function spawnEnemy() {

    if(!document.hasFocus()) {

        return;

    }

    const enemy = createEnemy();

    enemies.push(enemy);

    app.stage.addChild(enemy);

}

 

setInterval(spawnEnemy, enemySpawnInterval);

spawnEnemy();

Nach dem Login kopieren

Wir erstellen ein neues Array namens „Feinde“, um den Überblick über alle Feinde zu behalten. Anschließend erstellen wir eine neue Variable namens „FeindSpawnInterval“, die angibt, wie oft wir einen neuen Feind erzeugen möchten. Anschließend erstellen wir eine neue Methode namens spawnEnemy, die einen neuen Feind erstellt und ihn dem Feindes-Array und der Bühne hinzufügt. Anschließend rufen wir diese Methode alle feindseligen SpawnInterval-Millisekunden mit der setInterval-Methode auf.

Cool, jetzt erscheinen alle 2,5 Sekunden Feinde am oberen Bildschirmrand. Aber sie bewegen sich noch nicht und wir sehen sie nicht, weil sie außerhalb des Bildschirms sind. Lasst uns das beheben.

Die Feinde bewegen

Wir müssen die Position der Feinde in der Spielschleife aktualisieren. Fügen Sie den folgenden Code zu Ihrer Spielschleife hinzu, direkt unter der Stelle, an der wir die Position der Kugeln aktualisieren:

1

2

3

4

5

6

7

8

9

for(let i = 0; i < enemies.length; i++) {

    const enemy = enemies[i];

    enemy.y += 2.5;

 

    if(enemy.y > app.screen.height + 50) {

        app.stage.removeChild(enemy);

        enemies.splice(i, 1);

    }

}

Nach dem Login kopieren

Dieser Teil des Codes durchläuft alle Feinde, aktualisiert ihre Position, indem er sie um 2,5 Pixel nach unten verschiebt, und prüft, ob sie sich außerhalb der Grenzen befinden. Wenn dies der Fall ist, entfernen wir sie von der Bühne und aus der Gegnerreihe.

Schön! Wenn Sie Ihr Spiel jetzt ausführen, sehen Sie, wie Feinde oben auf dem Bildschirm erscheinen und sich nach unten bewegen.

Jetzt ist es Zeit, sie abzuschießen!

Auf die Feinde schießen

Fügen Sie den folgenden Code zu Ihrer Spielschleife hinzu, direkt unter der Stelle, an der wir die Position der Feinde aktualisieren:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

for(let i = 0; i < bullets.length; i++) {

    const bullet = bullets[i];

    for(let j = 0; j < enemies.length; j++) {

        const enemy = enemies[j];

        if(

            bullet.x > enemy.x &&

            bullet.x < enemy.x + 50 &&

            bullet.y > enemy.y &&

            bullet.y < enemy.y + 25

        ) {

            app.stage.removeChild(bullet);

            app.stage.removeChild(enemy);

            bullets.splice(i, 1);

            enemies.splice(j, 1);

        }

    }

}

Nach dem Login kopieren

Dieser Teil des Codes durchläuft alle Kugeln und alle Feinde und prüft, ob eine Kugel einen Feind trifft. Wenn dies der Fall ist, entfernen wir sowohl die Kugel als auch den Feind von der Bühne und ihren jeweiligen Aufstellungen.

Sie könnten diesen Code optimieren, indem Sie aus der inneren Schleife ausbrechen, wenn eine Kugel einen Feind trifft, aber im Moment ist das in Ordnung. Sie können die Schleife zur Aktualisierung der Geschossposition auch mit der Schleife zur Überprüfung der Geschosstreffer kombinieren, aber ich möchte sie aus Gründen der Übersichtlichkeit dieses Tutorials getrennt halten.

Und das ist es! Sie haben jetzt ein Spiel, in dem Sie sich nach links und rechts bewegen, Kugeln abfeuern und Feinde abschießen können. Im nächsten Teil werden wir dem Spiel einige HUD-Elemente hinzufügen und den Punktestand, das Level und die Leben des Spielers verfolgen.



Vergessen Sie nicht, sich für meinen Newsletter anzumelden, um als Erster über ähnliche Tutorials informiert zu werden.

Das obige ist der detaillierte Inhalt vonSpace Defender – vertreibe die Feinde. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
2 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Repo: Wie man Teamkollegen wiederbelebt
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Abenteuer: Wie man riesige Samen bekommt
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
2 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Repo: Wie man Teamkollegen wiederbelebt
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Abenteuer: Wie man riesige Samen bekommt
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Artikel -Tags

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Ersetzen Sie Stringzeichen in JavaScript Ersetzen Sie Stringzeichen in JavaScript Mar 11, 2025 am 12:07 AM

Ersetzen Sie Stringzeichen in JavaScript

JQuery überprüfen, ob das Datum gültig ist JQuery überprüfen, ob das Datum gültig ist Mar 01, 2025 am 08:51 AM

JQuery überprüfen, ob das Datum gültig ist

JQuery Get Element Polsterung/Rand JQuery Get Element Polsterung/Rand Mar 01, 2025 am 08:53 AM

JQuery Get Element Polsterung/Rand

10 JQuery Accords Registerkarten 10 JQuery Accords Registerkarten Mar 01, 2025 am 01:34 AM

10 JQuery Accords Registerkarten

10 lohnt 10 lohnt Mar 01, 2025 am 01:29 AM

10 lohnt

HTTP-Debugging mit Knoten und HTTP-Konsole HTTP-Debugging mit Knoten und HTTP-Konsole Mar 01, 2025 am 01:37 AM

HTTP-Debugging mit Knoten und HTTP-Konsole

JQuery fügen Sie Scrollbar zu Div hinzu JQuery fügen Sie Scrollbar zu Div hinzu Mar 01, 2025 am 01:30 AM

JQuery fügen Sie Scrollbar zu Div hinzu

Benutzerdefinierte Google -Search -API -Setup -Tutorial Benutzerdefinierte Google -Search -API -Setup -Tutorial Mar 04, 2025 am 01:06 AM

Benutzerdefinierte Google -Search -API -Setup -Tutorial

See all articles