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
Ähnlich wie der von GitHub bereitgestellte Code-H...
Inhaltsverzeichnis forEach() (ES6)-Methode map() ...
ab-Befehlsprinzip Der Befehl ab von Apache simuli...
Derzeit werden fast alle großen Websites und Anwe...
Führen Sie zunächst eine einfache Docker-Installa...
Inhaltsverzeichnis Klassisches Beispiel für einen...
Offizielle Dokumentation: JSON-Funktionen Name Be...
Inhaltsverzeichnis Hauptsächlich verwendete Postm...
Es ist sehr einfach, eine Scala-Umgebung in Linux...
Inhaltsverzeichnis Überblick in Operatorverfeiner...
Heute listet dieser Beitrag einige großartige Beis...
Inhaltsverzeichnis Vorwort Problem: Kopieren groß...
Ich habe MySQL 5.7 neu installiert. Beim Anmelden...
Welche Rolle spielt http im Knoten? Die Aufgabe d...
Ich habe ein Linux-Ubuntu-System auf meinem Compu...