Rotazione di gioco
- Pagina precedente Rimbalzo di gioco
- Pagina successiva Movimento di gioco
Il quadrato rosso può ruotare:
Ruotare il componente
Nella parte precedente di questa guida, il quadrato rosso poteva muoversi nella regione di gioco, ma non poteva ruotare o girare.
Per ruotare il componente, dobbiamo cambiare il modo in cui disegniamo il componente.
Il metodo di rotazione disponibile unicamente per l'elemento canvas ruoterà l'intero pavimento di disegno:

Tutto il contenuto che disegni sulla lavagna anche ruoterà, non solo il componente specifico.
Ecco perché dobbiamo usare update()
fare alcune modifiche nel metodo:
Prima di tutto, salviamo l'oggetto contesto attuale del pavimento di disegno:
ctx.save();
Poi utilizziamo il metodo translate per muovere l'intero pavimento di disegno al centro del componente specifico:
ctx.translate(x, y);

Poi eseguiamo la rotazione desiderata utilizzando il metodo rotate():
ctx.rotate(angle);

Ora siamo pronti a disegnare il componente sulla lavagna, ma ora lo faremo con il centro del componente disegnato sulla posizione 0,0 del pavimento di disegno:
ctx.fillRect(width / -2, height / -2, width, height);

Dopo aver completato, dobbiamo utilizzare il metodo restore per ripristinare l'oggetto contesto all'intero di cui è stato salvato:
ctx.restore();
Questo componente è l'unico oggetto che ruota:

costruttore del componente
component
Il costruttore ha un nome angle
nuova proprietà, è il numero di radianzi che rappresenta l'angolo del componente.
component
Il costruttore update
Il metodo che rappresenta la posizione di disegno del componente, qui puoi vedere le variazioni di rotazione permessa per il componente:
istanza
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(); }
- Pagina precedente Rimbalzo di gioco
- Pagina successiva Movimento di gioco