Rotasi permainan
Kotak merah dapat berputar:
Memutar Komponen
Sebelumnya di tutorial ini, kotak merah bisa bergerak di area game, tapi tidak bisa berputar atau berputar.
Untuk memutar komponen, kita harus mengubah cara kita menggambar komponen.
Satu-satunya metode rotasi yang tersedia untuk elemen kanvas akan memutar seluruh kanvas:
Semua hal lain yang Anda gambar di kanvas juga akan diputar, tidak hanya komponen tertentu.
Itu sebabnya kita harus membuat beberapa perubahan dalam update()
metode:
Pertama, kami menyimpan objek konteks kanvas saat ini:
ctx.save();
Kemudian kita pindahkan seluruh kanvas ke tengah komponen tertentu, menggunakan metode translate:
ctx.translate(x, y);
Kemudian kami melakukan rotasi yang diinginkan menggunakan metode rotate() :
ctx.rotate(angle);
Sekarang kita siap untuk menggambar komponen ke kanvas, tapi sekarang kita akan menggambarnya dengan posisi tengahnya di posisi 0,0 pada kanvas yang diterjemahkan (dan diputar):
ctx.fillRect(width / -2, height / -2, width, height);
Setelah selesai, kita harus mengembalikan objek konteks kembali ke posisi tersimpannya, menggunakan metode pemulihan:
ctx.restore();
Komponen adalah satu-satunya hal yang diputar:
Konstruktor Komponen
Konstruktor component
memiliki properti baru yang disebut angle
, yang merupakan bilangan radian yang mewakili sudut komponen.
Metode update
konstruktornya component
adalah kita menggambar komponen, dan di sini Anda dapat melihat perubahan yang memungkinkan komponen berputar:
Contoh
function component(width, height, color, x, y) {
this.width = width;
this.height = height;
this.angle = 0;
this.x = x;
this.y = y;
this.update = function() {
ctx = myGameArea.context;
ctx.save();
ctx.translate(this.x, this.y);
ctx.rotate(this.angle);
ctx.fillStyle = color;
ctx.fillRect(this.width / -2, this.height / -2, this.width, this.height);
ctx.restore();
}
}
function updateGameArea() {
myGameArea.clear();
myGamePiece.angle += 1 * Math.PI / 180;
myGamePiece.update();
}