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
1. Überprüfen Sie den Zeichensatz von MySQL Varia...
1. Reinigung vor der Installation rpm -qa | grep ...
Inhaltsverzeichnis Vorwort 1. Verwenden Sie for.....
1. MySQL Yum-Repository hinzufügen Offizielle MyS...
Hier sind einige Punkte, die Sie bei der Registri...
Siehe: https://www.jb51.net/article/112612.htm Üb...
Trident-Kern: IE, MaxThon, TT, The World, 360, So...
Inhaltsverzeichnis Anwendungsszenario Einfach aus...
1. Replikationsprinzip Der Masterserver schreibt ...
Ich habe in letzter Zeit nichts zu tun, also bast...
Vorwort: Ich bin kürzlich auf das Problem der Ins...
JPQL steht für Java Persistence Query Language. B...
<br />Nachfolgend sind die Probleme aufgefüh...
Inhaltsverzeichnis Vorwort Optimierung SSR Import...
Batchkommentare in SQL Server Batch-Annotation St...