
たかまる
プレイヤーの次はエネミーズだよ。
function drawEnemies() {
enemies.forEach(enemy => {
if (enemy.vx && enemy.vx > 0) {
ctx.save();
ctx.translate(enemy.x - worldX + enemy.width / 2, enemy.y + enemy.height / 2);
ctx.scale(-1, 1);
ctx.drawImage(
enemyImg,
-enemy.width / 2,
-enemy.height / 2,
enemy.width,
enemy.height
);
ctx.restore();
} else {
ctx.drawImage(
enemyImg,
enemy.x - worldX,
enemy.y,
enemy.width,
enemy.height
);
}
});
}

イカクくん
Enemiesって日本語で敵っていう意味だから、
これは敵の描写についてだね。
enemies.forEach(enemy => {
enemies という 配列 に対して、.forEach() メソッドを使って、各要素(enemy)に対して同じ処理を 順番に実行

たかまる
forEach()は、
配列の全ての要素に対して、指定した関数を順番に1回ずつ実行。
前に解説したの覚えてるかな?
if (enemy.vx && enemy.vx > 0) {
enemy.vx が存在していて、かつ enemy.vx が 0 より大きいなら処理を行う。

イカクくん
&&は両方満たすときだけ中の処理を実行するんだったよね!
条件を満たした時の処理
ctx.save();
ctx.translate(enemy.x - worldX + enemy.width / 2, enemy.y + enemy.height / 2);
ctx.scale(-1, 1);
ctx.drawImage(
enemyImg,
-enemy.width / 2,
-enemy.height / 2,
enemy.width,
enemy.height
);
ctx.restore();
} else {
ctx.drawImage(
enemyImg,
enemy.x - worldX,
enemy.y,
enemy.width,
enemy.height
);
}

たかまる
前回解説した、260行目のfunction drawPlayer()とほぼ同じだから
ここの解説は省略するね!

イカクくん
じゃぁ次に行こう!
コメント