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 Anforderung: Abfrage laufender...
Vorwort: Die Artikelserie „Erste Schritte mit MyS...
HTML-Formulare werden häufig verwendet, um Benutz...
Vorwort Um eine Tabelle zu löschen, kann der Befe...
Inhaltsverzeichnis 1. Das Konzept der Schließung ...
Als ich MySQL zum ersten Mal auf meiner virtuelle...
Inhaltsverzeichnis 1. Detaillierte Erklärung der ...
Vor Kurzem habe ich gelernt, mit Nginx statische ...
Während Ubuntu heute das beliebteste Linux-Betrie...
Vorwort Bei der täglichen Entwicklung müssen wir ...
Obwohl die papierlose Welt noch nicht angebrochen...
Lassen Sie uns zunächst darüber sprechen, warum w...
MySQL-Leistungsoptimierung Die MySQL-Leistungsopt...
Folgendes ist passiert. Heute habe ich mit GitHub...
Inhaltsverzeichnis Überblick Vorsichtsmaßnahmen 1...