最适合网络开发者的网站
图。初学者课程

尿素

游戏轮换


红色方块可以旋转:


旋转部件

在本教程前面的部分,红色方块能够在游戏区域内移动,但不能转动或旋转。

要旋转组件,我们必须改变绘制组件的方式。

画布元素唯一可用的旋转方法是旋转整个画布:

旋转

您在画布上绘制的所有其他内容也将旋转,而不仅仅是特定的组件。

这就是为什么我们必须做出一些改变 update() 方法:

首先,我们保存当前画布上下文对象:

ctx.save();

然后我们将整个画布移动到特定组件的中心,使用翻译方法:

ctx.translate(x, y);

游戏动作

然后我们使用 rotate() 方法执行所需的旋转:

ctx.rotate(angle);

游戏动作

现在我们准备将组件绘制到画布上,但是现在我们将在平移(和旋转)画布上将其中心位置绘制在 0,0 处:

ctx.fillRect(width / -2, height / -2, width, height);

游戏动作

完成后,我们必须使用 restore 方法将上下文对象恢复到其保存的位置:

ctx.restore();

该组件是唯一旋转的东西:

游戏动作

组件构造函数

component 构造函数有一个新属性,名为angle,是表示组件角度的弧度数。

update 方法component 构造函数是我们绘制组件的地方,在这里您可以看到允许组件旋转的变化:

例子

函数组件(宽度,高度,颜色,x,y){
这个.宽度=宽度;
这个.高度=高度;
这个.角度 = 0;
这个.x = x;
这个.y = y;
this.update = 函数(){
ctx = 我的游戏区域.context;
ctx.保存();
ctx.翻译(这个.x,这个.y);
ctx.旋转(这个.角度);
ctx.填充样式 = 颜色;
ctx.fillRect(这个.宽度/-2,这个.高度/-2,这个.宽度,这个.高度);
ctx.恢复();
  }
}

函数更新游戏区域(){
我的游戏区域.清除();
myGamePiece.angle += 1 * Math.PI / 180;
我的游戏部件.更新();
}
亲自尝试 »