🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
## 复习上节课学习的内容 小朋友们好!我是阿达老师。我们上节课完成了甲虫移动功能的实现,这节课我们将引入杰瑞的另一个敌人 —— 幽灵 ## 本节课知识点 使用随机数代码块实现幽灵在舞台区任意位置出现效果, 使用`面向角色`代码块实现幽灵向杰瑞逼近效果 停止全部代码块使用 ## 实现分析![](https://ws1.sinaimg.cn/large/6bd2803cgy1fuz0k89matj20nm03eq35.jpg) 要实现幽灵能够在任意位置出现,因为这个位置不固定,所以,需要使用到随机数功能; 要实现幽灵朝着杰瑞移动,所以要给幽灵设置一个方向,直接让幽灵面向杰瑞的方向就可以了 ## 视频实战 我们在这个项目中为杰瑞设置了两个敌人,分别是:甲虫和幽灵,一个邪恶的幽灵在神出鬼没,如果杰瑞碰到它游戏就会结束 我们先来实现幽灵的随机出现算法, 我们规纳一下,幽灵的算法需要完成两个功能 1、随机出现 2、朝着杰瑞的方向逼近 让我们来实现它吧,先打开网易卡搭的编程环境,在`我的作品`中选择《寻找蛋糕》这个项目,进入创作页,我们先从角色库中导入一个幽灵角色,切换到这个幽灵的编程界面,从事件模块组拖动`当绿旗被点击`代码块,从外观模块组拖动`隐藏`代码块,当绿旗被点击时,我们先让它隐藏起来, 在游戏启动之初,我先让幽灵等待一会再出现,这里我们用一个随机数来设置这个等待的时间,从控制模块组里拖入`等待1秒`,从运算符模块组里拖入`在1到10间随机选一个数`代码块,将这个随机的时间间隔改为5到10之间选一个随机数,将`在5到10间随机选一个数`代码块拖入刚刚等待的时间代码块内,如图所示: ![](https://ws1.sinaimg.cn/large/6bd2803cgy1fuz0f0m0duj20dc03kwel.jpg) 这段代码的意思是:等待一定的时间,这个时间是随机的,是5秒到10秒之间的一个随机数 随机出现的时间我们已经设置好了,那么接下来就是设置随机出现的位置了,同样,我们也要用到随机数代码块,因为x坐标和y坐标都是随机的,所以我们需要用到两个随机数代码块,我们先拖两个随机数代码块出来,然后从动作模块组里拖入`移到x...y...`代码块到脚本区,将两个随机数代码块分别替换x坐标和y坐标,将x坐标的随机范围设置为-220~220之间,将y坐标的随机范围设置为-160~160之间,代码如图所示: ![](https://ws1.sinaimg.cn/large/6bd2803cgy1fuz0k89matj20nm03eq35.jpg) 时间和位置都已经设置好了,我们该让幽灵出场了,因为当绿旗被点击时,我们让幽灵隐藏起来了,所以,现在需要让它显示出来,从外观模块组里拖入 `显示`代码块就可以了,这里再随机待3-6秒,给幽灵设置一个追逐杰瑞的时间,把以上代码连接起来,并让它们循环执行,就可以实现幽灵循环的随机出现效果了, ![](https://ws1.sinaimg.cn/large/6bd2803cgy1fuz0owp15vj20q009u75q.jpg) 下面我们来实现第二步,在幽灵显示出来的时间内,让它不断的逼近杰瑞,从事件模块组拖动`当绿旗被点击`代码块,从外观模块组拖动`隐藏`代码块,当绿旗被点击时,我们先让它隐藏起来,从动作模块组里拖入`将旋转模式设置为左右旋转`,然后继续拖入`面向鼠标指针`代码块,将“鼠标指针”切换为“杰瑞”,这段代码的意思是,让幽灵面向杰瑞的方向,方向设置好了,我们让幽灵移动起来就可以实现幽灵逼近杰瑞的效果了,从动作模块组里拖入`移动10步`代码块,将10步改为1步,运行一下试试吧, ![](https://ws1.sinaimg.cn/large/6bd2803cgy1fuz0uql1i7j20a408q0tc.jpg) 非常完美,幽灵出现后,可以向着杰现逼近了, 下面我们要设置一下幽灵碰到杰瑞之后的结果,从控制模块组里拖入`如果...那么...`, 从侦测模块组拖入`碰到鼠标指针`,将“鼠标指针”切换为“杰瑞”,把这个`碰到杰瑞`代码块作为条件放入我们刚刚的条件判断当中,再从控制模块组里拖入`停止全部`放入到条件判断的结果当中,如图: ![](https://ws1.sinaimg.cn/large/6bd2803cgy1fuz0z8lgxij20ac04a74e.jpg) 这段代码的意思很好理解:如果幽灵碰到杰瑞,那么就停止游戏,我们把这段代码放入逼近杰瑞的代码循环当中,完整的代码如下: ![](https://ws1.sinaimg.cn/large/6bd2803cgy1fuz119lwbmj20cw0cojsf.jpg) 幽灵的代码就编写完成了,我们昨天写的甲虫的代码当中并没有加入`停止全部`的逻辑,小朋友们,现在你们是不是可以自已把这部分逻辑加进去了呢?如果遇到问题记得给老师留言哦,今天到这里吧,拜拜 ## 小灶时间