1. Szenenlayout2. Fügen Sie einen Handle-Listener hinzu1. Eventänderungen überwachenUmstieg von der Original Mausserie auf die Touch-Serie
2. Koordinateneinstellung Wenn die Berührung gedrückt wird, ändert sich die Druckposition (verwenden Sie die Weltkoordinatenkonvertierung), und wenn die Berührung angehoben wird, kehrt sie zur ursprünglichen Position zurück (direkt auf 0 eingestellt, 0-Koordinaten sind die standardmäßigen relativen Koordinaten). beiBerührenBewegung(e:cc.Event.EventTouch){ // e.getLocation() ist der angeklickte Ort, also die Weltkoordinate. // Die Weltkoordinate muss in die lokale Koordinate umgewandelt werden. let parent=this.node.parent; // Übergeordneter Knoten (kreisförmiges Chassis) let pos:cc.Vec2=parent.convertToNodeSpaceAR(e.getLocation()); dies.node.setPosition(pos); } beiBerührenAbbrechen(){ dies.node.setPosition(cc.v3(0,0,0)); } 3. Beschränken Sie den Griff auf das TablettVerwenden Sie den Azimutwinkel, um die Kantenposition zu lokalisieren. Die Methode pos.normalize() gibt (cos, sin) des Punkts relativ zu (0, 0) zurück und gibt ein Vec2-Objekt zurück. let parent=this.node.parent; // Übergeordneter Knoten (kreisförmiges Chassis) let pos:cc.Vec2=parent.convertToNodeSpaceAR(e.getLocation()); // Die Position des Punktes (cos, sin) lass Richtung:cc.Vec2=pos.normalize(); // Begrenzen Sie auf innerhalb der Grenze let maxR = 100-20; //Der Abstand vom angeklickten Punkt zur Mitte des Tabletts let r : number = cc.Vec2.distance(pos, cc.v2(0,0)); wenn(r > maxR) { pos.x = maxR * Richtung.x; pos.y = maxR * Richtung.y; } // cc.log("Relative Position: " + pos.x + ", " + pos.y); this.node.setPosition( pos); 3. Fahrzeugsteuerung hinzufügen1. Drehung des Autoscc.Knoten.Winkel Rotationsimplementierung: beim Laden () { this.car=cc.find("Leinwand/Auto"); } let radian = pos.signAngle (cc.v2 (1,0)); //Berechnen Sie den Winkel zwischen der Klickposition und der Horizontale let ang = radian / Math.PI * 180; //Wandle Radiant in Winkel um this.car.angle = -ang; //Gegen den Uhrzeigersinn ist positiv, also hier auf im Uhrzeigersinn anpassen 2. Bewegung des Autos
Skript zur Autobewegung Richtung: cc.Vec2 = null; Geschwindigkeit: Zahl = 3; beim Laden() { } Start() { } update(dt) { if (this.direction == null) return; //Stillstand let dx = this.speed * this.direction.x; sei dy = diese.Geschwindigkeit * diese.Richtung.y; Lassen Sie pos = this.node.getPosition(); pos.x += dx; pos.y += dy; dies.node.setPosition(pos); } Gamepad-Steuerungsskript Auto: cc.Node = null; Carscript: cc.Komponente = null; // LEBENSZYKLUS-RÜCKRUFE: beim Laden() { dieses.Auto = cc.find("Canvas/Auto"); dieses.carscript = dieses.car.getComponent("CarMove"); } Start() { dies.node.on('touchstart', dies.onTouchStart, dies); dies.node.on('touchmove', dies.onTouchMove, dies); dies.node.on('touchend', dies.onTouchCancel, dies); dies.node.on('touchcancel', dies.onTouchCancel, dies); } beiBerührenStart() { } beiBerührenBewegung(e: cc.Event.EventTouch) { // e.getLocation() ist der angeklickte Ort, also die Weltkoordinate. // Die Weltkoordinate muss in eine lokale Koordinate umgewandelt werden. // let parent=this.node.parent;// Übergeordneter Knoten (kreisförmiges Chassis) // let pos:cc.Vec2=parent.convertToNodeSpaceAR(e.getLocation()); // dies.node.setPosition(pos); let parent = this.node.parent; // Übergeordneter Knoten (kreisförmiges Chassis) let pos: cc.Vec2 = parent.convertToNodeSpaceAR(e.getLocation()); // Die Position des Punktes (cos, sin) let-Richtung: cc.Vec2 = pos.normalize(); // Begrenzen Sie auf innerhalb der Grenze let maxR = 100 - 20; sei r: Zahl = cc.Vec2.Distanz(pos, cc.v2(0, 0)); wenn (r > maxR) { pos.x = maxR * Richtung.x; pos.y = maxR * Richtung.y; } // cc.log("Relative Position: " + pos.x + ", " + pos.y); dies.node.setPosition(pos); let radian = pos.signAngle(cc.v2(1, 0)); //Winkel zwischen der Klickposition und der Horizontale berechnen let ang = radian / Math.PI * 180; //Radiant in Winkel umwandeln this.car.angle = -ang; //Gegen den Uhrzeigersinn ist positiv, also hier auf im Uhrzeigersinn anpassen this.carscript.direction = direction; } beiBerührenAbbrechen() { this.node.setPosition(cc.v3(0, 0, 0)); //Setzen Sie die Richtung auf null, um das Auto anzuhalten. this.carscript.direction = null; } // aktualisieren (dt) {} Endergebnis Oben finden Sie Einzelheiten zur Verwendung des Gamecontrollers in CocosCreator. Weitere Informationen zu CocosCreator-Controllerbeispielen finden Sie in den anderen verwandten Artikeln auf 123WORDPRESS.COM! Das könnte Sie auch interessieren:
|
<<: Analyse der gemeinsamen Indexfunktion von MySQL und Anwendungsbeispiele
>>: So erstellen Sie eine Swap-Partitionsdatei in Linux
Inhaltsverzeichnis 1. JavaScript-Objekte 1).Array...
Wenn ich Vue lerne und immer Webpack-Anweisungen ...
Es handelt sich im Wesentlichen um ein allgemeine...
Als Neuling, der gerade mit dem Linux-System in K...
In diesem Artikel wird beschrieben, wie Sie die m...
Inhaltsverzeichnis WXS-Antwortereignis Plan A Sei...
Ich bin vor zwei Tagen beim Bearbeiten der schrift...
Einige im Projekt verwendete Sonderzeichen und Sy...
Schauen wir uns zunächst einige einfache Daten an:...
Suchen Sie zwei Testmaschinen: [root@docker1 cent...
Installieren Sie MySQL 8.0 docker run -p 63306:33...
Logo-Optimierung: 1. Das Logobild sollte so klein...
Wenn unter Linux eine Datei erstellt wird, ist de...
Dieser Artikel veranschaulicht anhand von Beispie...
1. Befehlseinführung Der Befehl userdel (User Del...