最新消息:680元/半年,推荐全网最具性价比的一站式编程学习平台码丁实验室

Scratch教程:变脸

Scratch 少儿编程 2371浏览 0评论

友情提示:680元/半年,儿童学编程,就上码丁实验室

本系列的上一次文章,已经探讨了如何通过改变一个角色的大小,自己作为自己的探测器,来检测与周围其它圆的距离。但这种方法也存在一定的问题,例如由于在不断改变角色的尺寸,会带来角色尺寸的不断变化,影响视觉的效果。

那么如何在不改变角色大小的情况下,对周围的角色进行探测呢?

 

 

 

关于钥匙的例子

变脸

     大家知道,钥匙的原理是在锁内有很多的小弹子,会根据钥匙上面齿的形状不断上下运动,当上端恰好到达一个平面时,锁就打开了。

 

今天的这个例子,是想模拟一下弹子随钥匙形状的运动。

也就是在钥匙改变左右位置时,多个弹子能够随之上下运动。

 

我们先制作一个钥匙的角色。(名称为Key)
变脸

 

 
加上脚本,按左右键后左右移动。
变脸

 

 
建立弹子的角色。
使用一个简单的矩形表示(命名为bar)。 

变脸

 

 
使用克隆在不同的位置生成多个弹子。
变脸 

在生成克隆体后。就可以设置为自动下落,碰到钥匙时停止运动。

 

存在问题

如果钥匙的表面向下运动,弹子可以通过是否碰撞钥匙的判断发现,之后自动下落。但如果钥匙的表面向上运动,由于弹子一直保持与钥匙接触,所以很难判断出发生了运动。

 

如果按照之前位置探测器的方式,需要不断地移动弹子的位置。这样一方面是从视觉效果上不好,另一方面是在接触钥匙时,很难判断是向上探索还是向下探索。

怎么办呢?

 

分析问题

我们的目标是让弹子保持在钥匙表面上方一定的距离。那么,如何保持一定的距离呢?既然弹子在这种情况下不与钥匙接触。我们是否可以设法再造一个造型用于保持距离呢?

这就是我们这个探测器的核心技术。也就是“使用多于一个的造型进行碰撞检测”。

我们一步步完成这个探测器。

首先,在弹子角色中复制一个原来的造型。
变脸

将复制出来的造型命名为”seeker”(也就是“找球手”)。

 

 
在底端的下面,绘制一条小的横线,这里用的是红色。
变脸

这样有什么用呢?

现在就可以分别切换两个造型与钥匙进行碰撞的检测了。得到的碰撞情况组合不同,说明当前的位置不同,就便于作出运动的判断了。

我们列出表格对所有可能的情况组合进行分析。

 

变脸

 
思路清楚后,程序设计就十分简单了。
变脸

程序的思路如下:首先判断造型Main是否与钥匙相碰,如果碰到,说明位置太低了,需要向上移动。如果没有碰撞,再使用Seeker造型进行检测,如果碰到,则不需要移动。如果也没有碰到,说明位置太高了,可以向下移动。

 

这样,使用切换造型加上简单的程序,就可以很方便地达到我们要求的效果。而且在钥匙表面上下变化的时候,弹子也会很迅速地移动到新的位置。

变脸

如果想改变弹子到表面的距离,可以改变底端下横线与底端的距离。

 

 

总结

 

1     造型探测器的核心思想是通过不同造型碰撞结果的条件组合,达到确定角色位置的作用。也就是通过角色的“变脸”来检测周围环境。

2     通过使用不同的造型进行碰撞检测,可以很方便地将角色保持在所需要的位置上。

3     此方法的优点在于,造型的切换基本不会影响显示的效果(特别是将探测点用浅颜色绘制时),可以提高运行的速度。

4     这篇文章只是提供了一个基本思路,大家还应该能够在此基础上发展出使用多个造型进行探测的方法。

 

您必须 登录 才能发表评论!