Rotace hry
Červený čtverec se může otáčet:
Rotující komponenty
Dříve v tomto tutoriálu se červený čtverec mohl pohybovat po herní ploše, ale nemohl se otáčet ani otáčet.
Chcete-li komponenty otáčet, musíme změnit způsob kreslení komponent.
Jediná metoda rotace dostupná pro prvek canvas otočí celé plátno:
Vše ostatní, co na plátno nakreslíte, bude také otočeno, nejen konkrétní součást.
Proto musíme provést několik změn v update()
metodě:
Nejprve uložíme aktuální kontextový objekt plátna:
ctx.save();
Poté přesuneme celé plátno do středu konkrétní komponenty pomocí metody překladu:
ctx.translate(x, y);
Poté provedeme požadovanou rotaci pomocí metody rotation():
ctx.rotate(angle);
Nyní jsme připraveni nakreslit komponentu na plátno, ale nyní ji nakreslíme se středovou polohou na pozici 0,0 na přeložené (a otočené) plátno:
ctx.fillRect(width / -2, height / -2, width, height);
Když skončíme, musíme objekt kontextu obnovit zpět do jeho uložené pozice pomocí metody obnovení:
ctx.restore();
Komponenta je jediná věc, která se otáčí:
Konstruktor komponent
Konstruktor component
má novou vlastnost nazvanou angle
, což je radiánové číslo, které představuje úhel komponenty.
Metodou update
konstruktoru component
je, že komponentu nakreslíme, a zde můžete vidět změny, které umožní komponentě rotovat:
Příklad
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();
}