案例 > 魔术表演

魔术表演

作者: 许毅松
1,031

魔法学院的学生要毕业了,师生们一起举办了一场盛大的毕业晚会,其中编程学院的老师表演了让人惊叹的魔术,快来看看他的表演吧,你能发现他的秘密吗

器材与软件: 1 mBot(mCore)控制板,mBlock PC版
涉及知识点: 造型切换、循环,广播,光线传感器的使用

本作品采用知识共享署名-相同方式共享 4.0 国际许可协议进行许可。知识共享许可协议

案例详情

1.实现效果

老巫师在舞台上表演魔术,当用手盖住mBot控制板时,魔术帽被盖上;当手移开后,魔术帽被打开,帽子里的物品也变了。

2.实现思路

用手是否盖住mBot控制板能控制魔术帽盖上和打开,是利用了mBot控制板上光线传感器的数值变化;魔术帽盖上和打开后,会影响帽子里物品的显示,此时需要用到广播功能。

3.实现过程

1)导入需要的背景和角色,删除原有的空白背景和默认角色,分别从库里导入一个舞台背景(stage2)以及老巫师(Wizard)和物品角色,从本地文件中上传一个魔术帽角色;

2)调整魔术帽到合适的大小和位置,将魔术帽的造型中心定位到魔术帽的左下角帽檐处,角色旋转时,会将造型中心点作为旋转中心;

3)选择魔术帽角色,添加如下测试脚本,记录光线传感器在不同情况下的数值,当用手遮挡mBot控制板前部时,光线传感器的数值在 50~200 之间跳动(视手和mBot主控板的距离会有变化);当手移开后,光线传感器不受到任何遮挡,其数值在 600~800 之间跳动(视环境光强数值会有变化),记录结束后,删除测试脚本;

4)利用光线传感器的数值变化实现“用手盖住和移开mBot控制板来控制魔术帽的盖上和打开”这一功能。在手盖住mBot控制板之前,即光线传感器不受遮挡,魔术帽一直处于打开状态,在手盖住mBot控制板后,光线传感器受到遮挡,魔术帽切换为盖上状态,由步骤3)可知,光线传感器数值<200可判断为其受到遮挡,光线传感器数值>600可判断其不受遮挡,用角色的旋转操作来切换魔术帽的打开和盖上;

5)点击脚本测试,第一次测试时基本实现了预期的功能,但第二次测试时如果一开始魔术帽处于盖上状态,则魔术帽打开和盖上时方向会出现错误,因此需要添加脚本,初始化魔术帽的位置和方向;

6)魔术帽打开后,帽子里的物品要出现,盖上后,帽子里的物品要消失,因此需要用到广播功能,将魔术帽的状态发送给物品,为魔术帽添加两条对应的广播,同时物品收到广播后,显示的状态进行对应的改变;

7)魔术帽每次打开后,帽子里的物品应该不一样,因此先为物品添加几个不同的造型,同时修改脚本,使每次魔术帽打开后物品的造型发生变化;

8)点击脚本测试,用手盖住mBot控制板时,魔术帽盖上,物品也消失了;当手移开后,魔术帽打开,同时物品出现,每次都变得不一样,实现了预期的功能,完成脚本。

4.作品的改进方向

1)为作品添加更多特效,比如魔术帽打开后,帽子里的物体逐渐显示出来,或者打开时添加神奇的声音特效;

2)打开后,帽子里的物品虽然有变化,但表演久了变化会被看出来,修改脚本,使帽子里的物品出现时具有更多的随机性。