多语言展示
当前在线:1581今日阅读:60今日分享:41

模块语言编程游戏之动画-第9关

第9关算得上真正意义上的动画了,这里需要控制一个圆沿着指定的路线运动。路线关卡作者已经设置好了,玩家可以根据作者给出的代码知道线条的走向,多运用数学运算就可以实现效果了。
工具/原料

块语言编程游戏客户端

方法/步骤
1

首先请看关卡帮助信息,要求按折现移动圆。折现路径作者已经给出。我们可以把折线的每一条直线分开看,分别是“横线”、“竖线”和“斜线”,而圆运动的路线和时间是关联的,所以我们可以利用“如果”语句根据time的值决定圆的移动。根据时间,整个动画由三个阶段组成,分别是0-20,21-40,41-100.

2

阶段一:0-20,圆由左向右移动,先从“逻辑”中拖出一个“如果”语句和一个逻辑条件,然后再从“动画”中拖出一个time设定time<=20.

3

接下来在“如果”条件中添加一个半径为10的圆,设定x = 0, y = 40,这是圆的初始位置。

4

从“动画”中拖出time控件,放到圆的x轴,这样动画的第一阶段完成,点击播放可以看到圆是沿着横线跑的。

5

第二阶段:圆由下往上运动,x轴固定为20,时间段为21-40,那么我们需要在第一个“如果”语句的“否则”项下新增一个“如果”语句,设定条件为time <= 40,因为前面的20已经走完,所以这里不需要考虑是否大于20.

6

添加第二阶段的圆,x轴固定20,y轴移动路线为“40 + (time - 20)x2”。

7

第三阶段:圆沿斜线移动,x轴移动路线为“time-20”,y轴为“80 - (time - 40)”当然你也可以简化一下写成y = 40 + time。

8

代码编辑完毕,点击播放按钮预览动画。

9

第9关通过!这次的JavaScript代码感觉还是有点意思,有兴趣可以研究研究。penColour('#999999');line(0, 40, 20, 40, 1);line(20, 40, 20, 80, 1);line(20, 80, 80, 20, 1);if (time() <= 20) {  circle(time(), 40, 10);} else {  if (time() <= 40) {    circle(20, 40 + (time() - 20) * 2, 10);  } else {    circle(time() - 20, 80 - (time() - 40), 10);  }}

注意事项

注意各阶段x和y轴对时间的关系是正确完成本关任务的关键。

推荐信息