码丁实验室,一站式儿童编程学习产品,寻地方代理合作共赢,微信联系:leon121393608。
在Scratch中开发时,常常需要将角色转向某个方向。
Scratch在软件中提供了“面向”积木,可以使一个角色很容易地指向另一个角色所在的位置,十分方便。
前提 必须在指定的目标位置上有一个角色。
这样Scratch才能根据两个角色的位置关系计算出面向的角度。
问题来了! 有的时候,在目标的位置上没有角色。或需要通过当前指向的角度进行一些其它控制时,就比较麻烦。
方案
对于这种问题,有两种解决方案。
本文章将介绍第一种方法,下一篇将介绍角度计算的方法。

目标角色法
此方法的思路是使一个目标角色移动到目标点,之后再让角色指向这个目标角色,实现的过程涉及到位置的传递和移动。
即给出两个点的坐标,在两点之间绘制一条虚线。
如果是绘制实线,程序会很简单,即移动到第一个点后,落笔再移动到第二个点。但如果绘制虚线,就涉及到面向终点所在的位置移动的问题了。
实施这个方法需要建立两个角色,一个是draw,用于绘制线,另一个是target,用于移动到目标位置。
这两个角色都不需要有造型图片。
在draw中编写如下的程序绘制一条随机虚线。
绘线子程序完成绘制虚线的功能。
子程序中使用了全局变量gTargetX和gTargetY来传递两个角色之间的变量(当然也可以使用访问另一角色变量的方式)。之后发出消息(注意一定是广播并等待),target角色在接收到消息后,就移动到由指定的位置,之后draw角色面向target移动,就完成了绘制过程。
现在程序中的终点判断比较简单,如果基于两个角色之间的距离,可能得到更好的程序。
在target中只需要编写如下的程序,接收到消息后移动到指定位置就可以了。
使用此程序绘制多条虚线,就能得到类似于如下的效果。
稍作调整,还可以绘制出有规律的图形(此程序略)
目标角色法:
优点:
是直观好用,便于理解,不需要自己进行计算。
缺点:
是需要使用额外的角色充当目标。
在有很多个角色(比如说多个克隆体)需要同时进行操作时,必然会带来移动的冲突。而且需要使用全局变量及消息来进行信息的传递。
结论
1 为了使角色能够面向一个指定的坐标位置,有不同的方法;
2 本文章介绍了目标角色法,其中心思想是将目标点的坐标传递给另一个角色(可以通过全局变量或访问角色变量的方法),之后使目标角色移动到指定的位置,再把主角色面向这个目标。
3 目标角色法的核心思路是:既然在指定的位置上没有角色可以用于朝向,就设法在那个位置上放置一个角色,也就是“无中生有”!
参考资料:此方法参考了网上其它作者的研究内容。可参考https://www.cctalk.com/v/15066922221635.