So verwenden Sie CocosCreator zum Erstellen eines Schießspiels

So verwenden Sie CocosCreator zum Erstellen eines Schießspiels

Analysieren Sie die Produktionsschritte:

1. Ressourcen vorbereiten und Szene erstellen

Sie können Ressourcen online finden oder meine verwenden. Erstellen Sie einen Ordner und legen Sie die Ressourcen im Ordner „res“ ab.

Erstellen Sie die Szene:
Schritt 1: Erstellen Sie einen einfarbigen Sprite-Hintergrund (Skript), legen Sie die Farbe fest und fügen Sie eine Widget-Komponente hinzu, damit er den Bildschirm ausfüllt.

Schritt 2: Erstellen Sie top und button leere Knoten als obere und untere unter dem bg Knoten und fügen Sie dann Dornknoten zu den beiden leeren Knoten hinzu (ziehen Sie das Bild einfach in den obersten Hierarchiemanager). Jetzt müssen wir top與button Knoten eine Layout組件hinzufügen und die Eigenschaften wie in der Abbildung gezeigt festlegen. Auf diese Weise können Sie sehen, dass sich oben und unten auf dem Bildschirm Dornen befinden.

Schritt 3: Fügen Sie der Szene auf die gleiche Weise Spieler, Kugeln und feindliche Flugzeuge hinzu, erstellen Sie einen Label-Knoten zur Anzeige des Punktestands und passen Sie die Position an;

2. Code steuert das Spiel

Schritt 1: Erstellen Sie ein game und mounten Sie es auf dg -Knoten;

Schritt 2: Bearbeiten Sie den Code und fügen Sie in properties Eigenschaften hinzu, um die Knoten Spieler, Kugel und Feind zu verknüpfen, und ordnen Sie sie dann im Editor zu.

Schritt 3: Steuerung der Codelogik, einschließlich Initialisierung von Spielern, Kugeln, Feinden; Registrieren von Überwachungsereignissen; Schreiben von Aktionsfunktionen; Wertungsbeurteilung usw.;

Vollständiger Code:

cc.Klasse({
    erweitert: cc.Component,

    Eigenschaften:
        Spielerknoten: cc.Node,
        Feindknoten: cc.Node,
        Feuerknoten: cc.Node,
        Punktestand: cc.Label,
    },
    
     beim Laden () {
        dies.playLoad();
        dies.fireLoad();
        dies.enemyLoad();
         dies.node.on("touchstart",dieses.fire,dieses);
         
     },

     update (dt) {
          wenn (Math.abs(this.fireNode.y-this.enemyNode.y)<(this.fireNode.height/3+this.enemyNode.height/3)
            &&Math.abs(dieser.fireNode.x-dieser.enemyNode.x)<(dieser.fireNode.width/3+dieser.enemyNode.width/3)){
              console.log("Besiege das feindliche Flugzeug");
              this.scoreNode.string= ++this.score; //Trefferpunktzahl this.fireNode.stopAction(this.fireAction);
            dieser.enemyNode.stopAction(diese.enemyAction);
            dies.enemyNode.active=false;
            dies.fireNode.active=false;
            this.fireLoad();//Kugeln initialisieren this.enemyLoad();//Feindliche Flugzeuge initialisieren}

     },

     // Ereignisüberwachung schließen onDestroy(){
        dies.node.off("touchstart",dieses.fire,dieses);
     },
    // Anfänglicher Spieler playLoad(){
        dies.score=0;
        dieser.playerNode.y=-cc.winSize.height/4;
        
    },
    //Bullet fireLoad() initialisieren{
        dies.fireNode.active=true;
        dies.isFire=false;
        dieser.fireNode.x=dieser.playerNode.x;
        dieser.Feuerknoten.y=dieser.Spielerknoten.y+dieser.Spielerknoten.Höhe;
    },
    // Initialisiere den Feind enemyLoad(){
        dieser.enemyNode.active=true;
        this.enemyNode.x=Math.random()* cc.winSize.width;
        dieser.Feindknoten.y=cc.winSize.height/3;
        sei x = cc.winSize.width/2-this.enemyNode.width/2;
        sei y=Math.random()* cc.winSize.height/4;
        Lassen Sie seq = cc.repeatForever (cc.sequence (cc.moveTo (1,5, cc.v2 (-x, y)), cc.moveTo (1,5, cc.v2 (x, y))));
        
        diese.enemyAction = diese.enemyNode.runAction (seq);
    },
    //Lade das Spiel bei Tod neu, Dear(){
        console.log("Tod");
        cc.director.loadScene("Spielszenen");
    },


    // Feuer, Kugel, Feuer(){
         wenn(dies.istFeuer) return;
         dies.isFire=true;
        console.log("Starten");
         var Feueraktion = cc.sequence(
             cc.moveTo(1,cc.v2(dieser.playerNode.x,cc.winSize.height/2)),
             cc.callFunc(()=>{
                dies.lieb();
            }));
        diese.fireAction = diese.fireNode.runAction(fireaction);
        console.log("Ende des Starts");
     }

});

Endergebnis

Oben finden Sie Einzelheiten zur Verwendung von CocosCreator zur Realisierung von Schießspielen. Weitere Informationen zur Realisierung von Schießspielen mit CocosCreator finden Sie in den anderen verwandten Artikeln auf 123WORDPRESS.COM!

Das könnte Sie auch interessieren:
  • Detaillierte Erklärung des Cocoscreater-Prefabs
  • So verwenden Sie residente Knoten für die Ebenenverwaltung in CocosCreator
  • So verwenden Sie CocosCreator zur Tonverarbeitung bei der Spieleentwicklung
  • CocosCreator ScrollView-Optimierungsreihe: Frame-Laden
  • Detaillierte Erläuterung des CocosCreator-Projektstrukturmechanismus
  • So verwenden Sie den CocosCreator-Objektpool
  • So zeigen Sie in CocosCreator eine Textur an der Wischposition an
  • Organisieren Sie die allgemeinen Wissenspunkte von CocosCreator
  • Umfassende Erklärung zum CocosCreator Hot Update
  • CocosCreator klassisches Einstiegsprojekt flappybird
  • CocosCreator Universal Framework Design Network
  • So verwenden Sie einen Gamecontroller in CocosCreator

<<:  Anwendungsbeispiele für die try_files-Direktive von Nginx

>>:  So vermeiden Sie die URL-Zeitzonenfalle in MySQL

Artikel empfehlen

Navicat kann keine Funktionslösungsfreigabe erstellen

Als ich zum ersten Mal eine MySQL-FUNKTION schrie...

TortoiseSvn Little Turtle Installation Neuestes ausführliches Grafik-Tutorial

Bei der Installation von tortoiseGit gab es immer...

Detaillierte Erläuterung der Hochverfügbarkeitskonfiguration von Docker

Docker Compose Docker Compose unterteilt die verw...

MySQL-Abfrage gibt an, dass das Feld keine Zahl und kein Komma SQL ist

Grundlegende SQL-Anweisungen MySQL-Abfrageanweisu...

Prozessdiagramm für die Ideenbereitstellung und Tomcat-Dienstimplementierung

Konfigurieren Sie zunächst die Projektartefakte K...

jQuery realisiert den Shuttle-Box-Effekt

In diesem Artikelbeispiel wird der spezifische Co...

Detaillierte Erklärung des TIMESTAMPDIFF-Falls in MySQL

1. Syntax TIMESTAMPDIFF(Einheit, Beginn, Ende); G...

Wird die Tabelle durch ein Update in einer MySQL-Transaktion gesperrt?

Zwei Fälle: 1. Mit Index 2. Ohne Index Voraussetz...

Praktische Lösung für die Bereitstellung von Prometheus-Containern

Umfeld Hostname IP-Adresse Aufschlag Prometheus 1...

So stellen Sie HTTPS kostenlos auf Tencent Cloud bereit

Als ich kürzlich ein WeChat-Applet schrieb, erfor...