欢迎光临
我们一直在努力

Scratch:机器人大战动画

这里     用scratch来模拟机器人大战电视节目

小朋友学习和使用scratch已经有一段时间了,心想怎么着也得来一个大点的作品来总结和回顾以往学过的知识。最开始的想法是做一集超级飞侠的节目,中间使用scratch控制tello无人机把乐高块从一个地方起飞搬到另一个地方来模拟乐迪的送货过程。只不过小朋友更痴迷于battlebots和国内的机器人争霸电视节目,更想用scratch做一个机器人格斗的动画。遂同意,毕竟鲁迅说过:做一个小朋友参与决定的动画,小朋友的参与度能高一些。做完之后,回头再看整个过程发现:嗯,鲁迅说得对!!!

机器人大战的录屏动画如下:

既然是动画,就参考了电影电视的拍摄思路。把整个故事分成了幕和场次。每一幕对应了一个背景或场景。幕中包含一个或多个场次,每一个场次对应一次事件,比如说小精灵sprite移动,变换等等。拍摄的电影和电视最终可以依靠剪辑人员把幕和场次剪辑在一起。但是对于scratch,幕和场次之间的衔接都是通过消息来完成的(如下图所示)。switch backdrop to动作会触发when backdrop switches to事件。broadcast动作会触发when I receive事件。

基于上面的消息和触发机制,整体的框架结构是第一幕由When start(绿旗子) Clicked触发,除此之外的幕都是由小精灵在某些场次中的switch backdrop to动作来触发。响应于该动作而触发的when backdrop switches to事件之后的动作就是发送当前幕的初始化消息。所有的小精灵都响应于该初始化消息对自己进行初始化。就好比舞台剧上的报幕员提示这是第几幕,然后演员们听到后各自需要穿好自己的衣服,站好自己的起始位置,准备进行当前幕的表演。

因为实现起来比较复杂,所以需要在制作之前定好一些规矩,从而使得制作过程有条理不混乱。规矩包括:

1.消息的命名由两部分构成:慕名称+消息作用。比如第2幕初始化消息为scene2initialization。

2.相同类型的精灵放在同一个精灵中,成为不同的皮肤。

3.语句模块的布局放置方面,为了阅读和编程不混乱,每一列只放置一幕的模块代码。

这段故事包含了6幕,scene0到scene5。scene0是开始屏幕,scene1是主持人登场介绍,scene2是蓝方和红方机器人登场,scene3是询问蓝方和红方是否准备好,scene4是蓝方和红方机器人对决,scene5是获胜颁奖。

1.变换颜色以及放上鼠标指针会变大的start按钮

变换颜色依靠的是change color effect by动作。而变大变小效果依靠的是判断touching mouse-pointer的真假来set size to 30%或者40%。

2.显示BATTLE BOTS

字母只有一个小精灵letters,但是它有很多costume,并且costume的命名有规律,都是字母-glow形式。我们在switch costume to中利用了这个规律。

3.两边向中间关闭效果

1.小猫走到舞台中央

除了这种实现小猫走动的效果之外,还有另外一种实现方式,就是把小猫costume改变的动作放到另一个when I receive scene1initialization事件之后的forever循环里面。

2.晃动的比赛板

1.机器人移动

1.手跟随鼠标移动

此外,使用了buttonstate(请忽略程序中botton的笔误)来指示hand小精灵选择哪个皮肤costume。

2.蓝队红队准备按钮

流程是先出现蓝色按钮,等待用户按下之后再显示红色按钮,等用户按下之后转到scene4。

两个机器人依次移动,每次移动都随机选择一个方向,移动随机的距离。当两个机器人碰到时候,赢方是当前的移动方。不要问为什么这么设计比赛,因为这样设计简单!!!

1.显示提示字幕winner is

2.显示胜利机器人

多多机器人工作室

赞(39)
分享到: 更多

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址