粉丝33.3万获赞200.6万

scratch 基础入门教程第七期,今天来做一个射击类的游戏,炮塔防御。先来看完整版的效果,中间是我们手绘的炮塔造型,用鼠标控制他的旋转,按下空格发射炮弹。红色的方块是敌人,他从四面八方向中间靠拢进攻,我们的炮塔被炮弹击中就会炸裂消失, 智商耳瞎。降落的红色线条呢是我们的超级大招,按 m 键来触发,所到之处呢是寸草不生,敌人碰到炮塔。游戏结束, 首先绘制炮塔的造型,随便画一个矩形出来,稍微调整一下他的大小,我们的画布是可以放大的, 一定要注意。手绘的造型呢,默认是朝向九十度的,所以我们得把它按照炮塔向右的情况来绘制这个造型,把它的颜色调整成绿色,当然你可以选择你喜欢的颜色。接下来利用锚点工具,也就是工具栏当中的第二个工具, 去拖拽长方形的四个角和他的边缘,不断调整他的形状,得到一个你满意的炮塔造型就可以了。然后利用选择工具调整一下他的位置,把他的几个中心对准我们画布的十字花,这将会是他的旋转中心。 接下来还是利用矩形工具给他画一个炮管,接在身上就可以了。最后来做点装饰,按住 shift 画一个正圆,再按住 shift 画一个正方形,把他们点缀在炮塔盖上,给炮塔进行编码。他的代码很简单,首先要移动到屏幕的中心,也就是坐标零零的这个位置上去, 然后重复执行,不断面向鼠标指针。这个我们以前经常做了,炮塔的代码还没有完成,但是先放在这,我们新增一个角色,也就是炮弹,选择我们常见的这个球的造型就可以了,他默认有很多种不同颜色的造型,删掉无用的颜色,把第一个复制一下, 继续利用我们的这个锚点工具去拖拽他的边缘,把他制造出一个爆炸的效果。我们发射的是圆形的炮弹,等他击中目标的时候就给他切换成爆炸的造型。选中这个造型,调整一下颜色,把他这个渐变色换成纯黄和纯红,让他在屏幕上更明显一些, 大小也给他稍微的放大一些,手动调整他的造型大小,设成三十,同时把名字改一下,不使用他默认的角色名字了。炮弹角色肯定是要使用克隆体功能的, 所以他上来先做一个隐藏位置呢,给他调整到移到炮塔的位置上去就可以了。接下来的操作有点反直觉了,正常来讲,我们肯定会想到要给炮弹加一个克隆自己的代码, 但这次我不能这么做,而是要在炮塔这个角色里边增加代码,当按下空格的时候执行克隆。可是呢,这不是克隆自己, 是克隆炮弹这个角色,原因我待会会解释。先来完成。炮弹里当作为克隆体启动时,对应的代码 本体是隐藏的,作为克隆体启动的第一件事情就是先显示出来,然后就是要调整方向,炮弹被发射出去,他的方向呢,跟这个炮管应该是一致的,所以呢,他要面向炮塔所朝向的方向,注意是面向炮塔朝向的方向,而不是面向炮塔 这里呢,我们可以通过侦测积木里边获得到炮塔的方向,把它填入到面向这个积木里就可以了。方向调整好之后呢,我想先让他大幅的移动几步,让他移动到炮管的末端位置上去, 这里呢,我需要重复实验的去调试几次来确定到底移动多少步。按下空格产生克隆体,看一下他的位置是不是炮口的末端。每个人画的炮塔都是不一样的,所以这里呢,需要你自己去调试出来。你所需 需要的移动步数,方向位置都准备好了,现在开始发射炮弹只需要一个重复执行,每次移动五步就可以了,具体的你也可以自己微调, 简单的试色一下看看效果。然后我会用一个例子来说明,为什么我不把克隆炮弹的功能放在炮弹这个角色本身来实现, 我给炮弹角色也加上按下空格就产生克隆体,同时呢把原来炮塔里的代码先给他断开,然后我们验证一下,看看这样会发生什么样的事情。注意看, 我只按了几下空格,瞬间就乱套了,这是因为我们之前说过克隆体呢,拥有这里面的全部代码的功能,也就意味着当你按下空格的时候,产生克隆体的可不只是原来的那个隐藏的炮弹,所有已经发射出来的炮弹也都会产生新的克隆体,一变二,二变四,不断的翻着翻的往上涨。 所以当我们使用克隆体的时候,一定要小心,不要想。当然千万不要忘了,克隆体也会无意当中执行那些你不想让他执行的功能继续恢复成原来的代码,我们还是让炮塔来产生克隆体, 紧接着就发现了新的问题,按住空格不放呢,这个子弹的密度太高了,不合理,给他加一个等待零点二秒啊,稍微的等待一下就可以了。问题解决,继续给炮弹进行编码。 克隆体使用第一要点呢是避免让他执行不想执行的代码,那第二要点就是注意让他在合适的时机删除克隆体了。对 炮仗来说,碰到边缘就应该删除克隆体,当然碰到敌人也要删除克隆体,那我们先把敌人这个角色给他画出来,很简单,利用矩形工具按住 shift 画一个正方形出来,颜色呢,你自己随意搭配就可以了,大小不要太大,这是原始造型,把它复制一下,我还需要一个炸 炸裂之后的效果,接着改一下他的角色名,就是敌人。接下来用橡皮工具给他划上几刀,把它充分的划开,划成几块,然后把这些碎片向四周脱坠,这样就形成一个炸裂的效果了。回到代码界面,敌人开局也是要先隐藏的,因为他也要用到很多的克隆体, 同时注意调整一下初始造型,应该是方块造型的,立齐之后,这个本体需要不断的重复执行来产生克隆体,同时呢,他的位置应该是不确定的,以前我们也做过类似的功能,移动到随机位置来产生克隆体, 但这里呢,有一个问题,如果这个随机位置刚好碰到了炮塔,那这游戏就玩完了,或者这个位置离炮塔太近,你也是无法防御的,所以必须加一个前置的条件,一到随机位置之后,如果这个位置呢距离我们的炮塔足够远,那么我们才让他克隆,否则的话就 不要克隆了。怎么判断他足够远呢?首先在运算类积木里边是可以比较大小的,我们拖过来一个大于号,把它填入条件里边,那我们判断的目标呢,就是跟炮塔的这个距离,这个在侦测里也是可以获得到的, 把它填进去,我们判断这个距离是否大于一百八。为什么是一百八呢?最上边或者最下边距离炮塔的距离刚好是一百八。同时如果你产生了一个克隆体,那么就要稍微的等待一下,这里我们等待零点五秒,目的是避免短时间产生大量的克隆体。 当作为克隆体启动之后,首先是要显示出来,然后调整方向,我们要面向炮塔的方向,从不直行,每次呢移动一步。如果敌人碰到了炮弹,就要删除克隆体,但是在删除之前呢,得先切换一下造型,换成炸裂造型,而且要维持零点一秒的时间, 不然的话你是看不清这个造型的存在的。先切造型再等待,然后再删除克隆体。类似的炮弹这一边呢,如果他碰到了敌人这个角色,也是要切换造型,然后删除克隆体的, 同时注意把他的本体初始造型先设置成原始造型。切换造型之后,删除克隆体之前,一定要记得等待零点一秒,不然这个造型你是看不见他的。这时候可以来试试效果了,基本上接近成品了, 炮弹因为比较小,他这个爆炸效果可能不明显,但是我们这个敌人的爆炸效果还是很炸裂的,现在还差一个环节,就是判定游戏失败,当这个炮塔碰到我们敌人决选的时候,就停止全部脚本,游戏结束。 顺带小的我在给发射炮弹的时候增加一个音效,给敌人角色也增加一个音效,用在他发生爆炸的时候,我们从他自带的这个音乐列表里边去 筛选一下,找一个适合的声音给他加进去。现在其实这已经是一个完整的游戏了,有攻有守,有判定失败的条件,但是还觉得不够过瘾,我想给他增加一个大招,可以瞬间消除屏幕上所有的敌人,会是一个新的角色。造型非常简单,我只是想要一条激光而已,所以就是一个很长很长的矩形就行了。 记者,调整好中心点,把图形的中心跟这个画布的中心对应上,代码也非常简单,对齐之后移到整个屏幕的顶端,坐标呢就是零一百八,然后隐藏起来。 当按下 m 键的时候要触发这个大招,他要至顶部,一秒钟之内移到最下部,我们利用在一秒内滑行到零负一百八,当然他要先显示出来,移动到位之后再次隐藏,同时返回到最上部。零一百八。这大招可不能无限放这里,一定要加一个等待五秒,当然你也 可以把它调的更难一些,还差最后一步,对敌人碰到大招之后,他得删除自己才行,所以在这里做一个调整。判断条件呢,从碰到炮弹变成碰到炮弹, 碰到我们这个角色一,这样大招才算是生效了。好了,一个射击游戏炮塔防御就完成了,都来试试吧!可以把你们的改编作品录成视频放在评论区。

这是我们塔防游戏的第三集,在这一集中,我们将会实现让炮台跟踪每一个敌人并展开攻击。 很多同学都在催促老师赶紧更新第三集啊,首先呢非常开心啊,这个系列教程得到了这么多同学们的喜欢,那我们第三集之所以更新的比较慢,是因为这一集是我们整个系列教程中最难的一集。 为了实现跟踪每一个敌人这个功能,我们要对列表进行大量的操作,并且呢会运用到两个数学公式。 当然呢,大家也不用太担心,在第三集之后,我们的教程呢就会相对简单一点,所以大家一定要攻克第三关。好,那话不多说,我们现在开始编程, 为了实现让炮台能够监控每一个克隆体的功能,我们呢去给他单独的 建立一个积木,这个积木呢就是专门用来监控敌人并展开射击的,我们制作一个新的积木,给他起个名字叫 炮台监控与射击。好用这个名字好,那这个模块什么时候使用呢?我们让他在放下鼠标之后, 放下炮台之后,开始一直监控每一个敌人,那我们把这个地方呢稍微优化一下,我们用成如果,那么否则, 如果等于选中让他跟随鼠标进行移动,一旦放开了之后呢,他就应该不断的去监控敌人,然后呢展开设计好,这是一个大的框架,我们 为了实现能够监控每一个敌人呢,我们需要有一个变量,当我找到了我的目标敌人之后呢,我要对他进行展开攻击,所以我建立一个变量啊,仅次用于当前角色叫目标敌人的编号,目标敌人 编号,我要去找到这个克隆体里面,我要先攻击哪一个好?这呢电量很多,我们把其他的先隐藏一下,然后还有啊,敌人里面的这些 好,是保留一个我们新征的好。为了找到这个目标敌人的编号呢,我们就需要把列表里面所有的敌人编号都找一遍,对不对?那么就再来一个检查 敌人编号,我要把所有的敌人编号呢都检查一遍,看谁在我的攻击范围之内,并且离我最远,先攻击哪一个好? 这两个变量,那一开始的时候呢,先把这两个变量的初始化一下。目标敌人编号刚开始不知道是谁就设定成空,那检查敌人编号呢?我从一开始去啊,检查一二四零,待会呢,一开始检查的时候把它设定成一, 每一次我都应该把我们所有的克隆体都检查一遍,看看谁应该被攻击,对不对?所以我应该来一个重复执行去检查。重复执行几次呢?我们的这个 敌人编号有几个,我就去检查几次,我们需要在运算里面找到有一个, 在这里面有一个项目数好,敌人编号的项目数,它里面有几个,我就去重复执行,检查几次。每一次检查的这个敌人编号呢,我都给他增加一,那这样的话,第一次检查的是一,重复一下,第二次检查的是二 啊,这里有一个细节,就是我这个敌人编号呢,他是从一增加到二,增加到三啊,按依次顺序增加的,但是我这个克隆奇的编号呢?可不一定,因为有可能我把第一个先打死了,那下一次我列表里面 敌人编号里面纯的,那这第一个呢?不一定就是一了,所以我需要找到我检查的第一个他的编号到底是几,所以我们还是需要用一下敌人编号的第几项。我检查的敌人编号呢,是第几项把它放进去, 比如说这个编号现在是我们把它设定成一的话,那他检查了应该是第一个编号,如果我二现在存在一里面,检查就应该是二了。我们真正要检查的敌人编号呢,应该是里面存的这一个,所以呢我再建立一个变量, 检查敌人编号他真正的 id 是多少,我把它存一下,然后呢把它设定为 检查敌人真正的 id, 设定成敌人编号的一目标,像这样的话才能真正的去检查每一个敌人。 好,这里有一个小小的失误,这个应该是检查敌人编号。好,那有了这个敌人的编号呢,我们就要去测量一下到这个克隆体的距离了,那我们再建立 一个积木,它的作用呢就是计算一下到敌人的距离,好完成。好。那怎么样去计算一下到这个克隆体的距离是多少呢?可能我们会会很自然的想到 我们侦测里面有一个盗贼贼的距离,盗贼贼的距离,比如说选择敌人。啊,那在这个地方呢,我们不能用这个模块是,呃,原因是因为这个呢,只能检测出来我们炮台到 人体的这个距离,并不能测量出来到克隆体的距离,所以这个地方呢,需要我们自己呢运用数学公式来进行一下计算。 那应该怎么计算到敌人的这个距离呢,我们要通过每一个克隆体的 s 坐标,歪坐标我们已经存着了,对吧?通过这两个 坐标以及我们炮台的坐标展开一个计算,要用到一个数学公式。好,那我们先把它改一下,我需要呢给他添加两个输入项,这两个输入项呢就分别是敌人的 s 坐标和敌人的歪坐标, 敌人歪坐标。 好,有了这两个坐标呢,我们就可以配合炮台的 s 坐标歪坐标进行一人距离的这个计算了。那我们建立一个变量 紧身为单身角色到敌人的距离。 好,那到敌人的距离呢?我们把它设定一下,设定为这个地方呢,就需要用一下我们刚 刚才那个公式了,我们需要用一下减法,低音的 x 坐标减去炮台的 x 坐标, 然后他的平方我们直接复制一下,让他们两个相乘 放进去。放进去好,然后呢还需要再加上 歪坐标相减他们的平方,然后呢我们再复制一下。好,这个地方呢改成敌人歪坐标 减去,这也是歪坐标, 把他们 加在一起好,然后呢还需要有一个平方根的操作,在运算里面有一个平方根好把它放进去 啊,这是我们数学上怎么让球两个点之间距离的一个公式,如果你还没有学过的话呢,你可以啊,先根据我的这个模块呢把它拼出来啊。这些告诫我们一定要好好的学习数学,在游戏编程里面后面呢也会涉及到大量的数学,这样呢你的游戏才会非常的丝滑。 好,那接下来呢,我们就可以把这个新的模块呢运用到我们监测的这个模块里面去了, 把它拖出来去计算一下到敌人的距离。好,那这个地方应该填哪个东西呢?我们要去找一找检 他的这个敌人编号 id, 他到我们炮台的距离是多少?那首先要找到他的 s 坐标和歪坐标,我们找到我们的乘着敌人 s 坐标和歪坐标的这两个列表。啊,那这两个列表他的第几项呢?我们只要把敌人的编号放进去就可以了,我们找到 第几项?找到敌人 x 坐标的第几项呢?检查的敌人编号 id, 这一项就是他的 s 坐标,同样的我们复制一下,找到敌人的歪坐标的 编号 id 对应的这个值,这样的话他就能够把到敌人的距离给计算出来了。现在呢,我们已经能够通过这个新的模块计算出来每一个克隆体到炮台的距离。 那接下来我们就要去找一找,在这些敌人里面哪一个是我们要攻击的这个目标呢?我们呢有两个限制,我们先加一个判断, 通过一个判断去找一找到底哪一个目标是我们要攻击的。我们有两个条件,第一个条件呢是首先这个敌人呢得在我们攻击范围之内,对吧?所以呢我们来一个小雨,如果他到敌人的距离 小于我们的攻击范围,我们要找一个电量用来存一下攻击范围。好,那这个攻击范围呢,我们可以把它放在这个 攻击范围的角色里面,给他一个初始值,我们把它设定成一百吧。 好,那呃,如果我们发现这个敌人小于我们攻击范围的话,我们就可以对他们展开攻击了,但是呢有可能有好几个敌人都在我们攻击范围之内,我们先攻击哪一个呢? 我们的策略是先攻击离我们最远的那一个,先把跑的最快的这个即将跑出我们范围的这个干掉。那这个怎么去计算呢?这里就涉及到我们怎么从多个距离里面找到最远的那一个,涉及到一点一点点 断法的知识。那这个呃细节逻辑呢,老师就不在这里阐述了,大家可以啊,根据老师的代码呢,先理解一下。好,我们呢需要去找一下最远的距 离,这个变量呢还没有建立,我们创建一下 最远的敌人距离。 好,我们把每一个敌人进度都去跟他比较一下 敌人进度的这个编号对应的敌人进度。然后呢去跟他比较一下,看他是不是大于我们的最远的距离, 大于我们的到敌人的最远距离,不是这一个最远的敌人距离, 把这两个条件呢合并在一起,如果他满足这个条件的话呢,这可能是我们要攻击的目标敌人,我们先把这个最远距离 给他更新一下,将最远的敌人距离更新成我们正在检查的这么一个敌人编号,他对应的这个距离,并且呢把我们的目标敌人的编号,目标敌人的编号 也更新成我们正在检查的这个敌人编号 id。 这样的话呢,我们通过重复执行检查每一个敌人,我们就能够最终在这个重复执行结束之后找到我们的目标敌人编号。那我们来简单的测验一下这个功能是否管用。 好,我们呢让他一边监控呢,一边说出来他找到的那个敌人啊,目标敌人到底是谁?我们找一个说,每次讲 完了之后呢,都把这个目标敌人的编号呢说出来,目标敌人编号说出来, 来,我们运行把炮台赶紧往这一放好,一开始呢,他检测出来,一是他要攻击的目标,等到快走之后呢,他应该会再切换一下,我们再试验一下 一二,好,然后呢,哎,最后呢他又检测到九了,这是因为他不仅呢是要离距离最远,而且呢还要在我们攻击范围之内才可以。这个攻击范围呢,我们设定成了一百, 对吧?测定成了一百,这个一百的范围大概是这么大,我们可以通过调节这个造型呢,再去试验一下, 现在我们已经能够监控每一个敌人,并找到我们的啊目标攻击敌人了,但是呢有一个小小的问题是,这个炮台是不是并没有当敌人出现的时候,立马把它转向过来,并且随着敌人的移动进行跟进呀?那这个功能呢,我们现在来把它完善一下, 那这个呢,我们首先是等到所有的判断结束之后,我要去判断一下我有没有找到目标敌人,对不对?那我们这有一个目标敌人编号,如果他不是空的话,证明我们找到我们要攻击的这个敌人了,所以我们找一个 不成立,什么情况不成立呢?他等于空不成立等于等于目标敌人编号, 如果经过了这一番操作,他还是空,那就说明没找到,如果他等于空不成立,说明他找到要攻击的这个目标了, 那我们就要计算一下到这个目标敌人他的角度是多少,然后我让我的炮台扭转过去,那这一部分呢,要稍微复杂一点,他涉及到一些三角函数的知识,那这个知识呢,应该是要到 高一才会学习啊,所以呢,同学们可以根据我的模块呢,把它先做出来,以后等学到这一部分知识的时候呢,你再加深一下理解啊。那这个公式呢,我可以跟大家先展示一下。 因为敌人有可能在我们炮台的两侧,所以我们要分成两种情况,然后找到目标敌人的 x 坐标,敌人的 x 坐标的第目标敌人编号的这一项,如果他大于我们的炮台的 s 坐标 是一种情况,在这边是一种情况,在这边是一种情况。好,然后呢我们要去计算一下他的这个公式。我们找到运算里面有一个计算,有一个 a 碳, 让他们的 y 坐标相减除以 x 坐标相减,就是我们要的目标 减去歪,坐标去掉,然后呢复制一下,我们 x 坐标也相减, 然后把这两个数呢相除一下, 放进去, 放进去,最后算出来这个值呢,算一下他的 a 碳,鱼切,然后找出来他的角度,这个呢是我们计算出来的基础角度,然后呢要再根据他的位置呢做一些变化。我们有一个 相减的过程,我们让九十减去算出来的这个值就是我们要面向的方向了, 面向什么方向?把它放进去好,如果他在左边的话,我们还需要把角度呢,再调整一下好这个过程呢? 这个计算角度的过程,大家理解起来肯定是有问题的,这涉及到呃高于的一些三角函数的知识,大家可以先把它做出来,学到这个知识的时候呢,再把它深入的理解一下,也有助于你啊高中学习的这些数学知识的深入理解。 那我们来测验一下这个功能到底管不管用呢?点击绿奇,然后把炮台拖过来。 好,我们发现当这个敌人进入攻击范围的时候呢,我们的炮台的角度就发生了一个变化,他首先朝左边瞄住 号一,然后等到他一到这边的时候呢,他又转了过来,这说明我们这一部分的代码是没有问题的,然后我们就可以把我们测试的这个 这个模块呢把它去掉了。好,那接下来呢,我们就需要让我们的炮台展开真正的攻击, 在此之前呢,我们先把这些电量和列表呢,把它隐藏起来。 好,这有一个最远的距离,我们给他加一个保险,这个他计算的时候呢,我们让他先从最小的这个地方开始判断,这是一个小技巧啊,我们保证第一个也有可能被选上。负九九九九 勾选掉。文件保存到电脑保存一下, 塔防游戏二三保存 好,现在没有那么多干扰了,我们可以再测试一下全屏测试一下。 好,我们能看到随着敌人 的行走呢,我们的炮台也会发生对应的旋转,非常好。接下来就是要攻击他们了,为了实现攻击敌人,我们需要有一个变量来标志我们是否展开攻击。我们建立一个变量,仅适用于炮台是否攻击 好,那这个变量呢?一开始我们把它设定成 no, 你不能上来就攻击,对不对?一开始当克隆体出来的时候,我们不攻击。 no, 然后什么时候可以攻击呢?我们在这个地方,当我找到目标编号的时候,是不是就可以开始攻击了? 好,然后呢?在这个炮台监控与射击的下面,我们来判断一下,如果他是 yes 的话,我就去攻击他, 我们找一个判断,如果,然后等于 是否攻击,如果是否攻击等于 yes 的话,我就要去攻击他。这个攻击呢,我们其实就是要做两个操作,第一个呢是把他的敌人进度你不能再走了,直接把他更新成大的,再见 敌人进度的第目标敌人编号的这一项,我们把它这个改成这个大的,找到更新,将它 替换为将敌人进度的第目标敌人编号项替换为带的, 你没有进度了,你要死掉了。好,然后呢,我们稍微等待零点,呃,一会呢,再去进行下一次攻击, 零点八,零点七也可以。好,那更新成带了之后,这个敌人到底怎么样被攻击消失掉呢?我们需要在这个敌人这里呢,再来一个把他删除的这个地方优化一下。好,这里 以前呢,我们是碰见舞台边缘才把他删除掉,现在我们加一个,或者他在中间被打死,也是需要把他删掉的。这个呢就是我们敌人进度。 好,敌人进度的第 克隆编号,克隆体编号,如果我发现哪一个克隆体的编号的敌人进度变成了带的死掉了, 这种情况呢?我就把这个克隆体删除掉。 好,我们测验一下,看能不能把敌人攻击掉, 我发现他的确在转弯,但是敌人并没有消失,并没有被我们的并没有把自己三这个克隆体删除掉,我们检查一下为什么? 好,我们把他的,我们再检查检查有没有跟踪到目标敌人,应该是跟踪到了,因为他已经在转弯了,我们看这个是否攻击 有没有发生变化,有没有重弄,改成 yes。 好,的确改成 yes 了,但是呢并没有消失,也就是说我们问题出现在这个地方, 当他等于 yes 的时候,他把它更新成了戴戴,然后呢这个戴戴呢?他并没有把它删除掉, 并没有进到这一步啊,那有可能是因为我们敌人进度的这个列表呢,又被这里更新掉了,对吧?只能是这个原因啊,这里我们应该加一个只有当敌人进度的这个东西,不等于代代,我们才要更新他的坐标,正常我们就不应该更新了, 加一个判断,如果等于带的不成立, 我们才应该去把他删除掉。好,我们再试验一下, 这时我们发现哦没有转弯了, 这可能有一些细节我们要处理一下。当我们把某一个删掉之后呢,我们就需要把他的编号呢和这个坐标呢都更新一下,把这个坐标呢直接不要让他再更新了,你既然被删除了,就都是空。然后敌人的这个 这个编号呢,我们也把它删除掉,根据这个克隆体编号,我们把它在敌人编号里面的这个也给他删除掉,免得我们 判断的时候出现错误。我们找到这个编号,他对应的真正的这个 id 克隆体编号,比如说三他对应的编号是这个东西,然后呢把它删除掉,删除到敌人编号的这一项,好,这样子 我们再来测试一下,我们把炮弹拿出来,好,我们能发现这一次真的是监控到敌人之后呢,就把他给删除掉了,他从我们敌人编号里面呢也去除掉了。 好,最后呢从这里走的时候呢,敌人编号也就消失了。我们最后呢把这个炮台这里的这个说出是否攻击,改成说出目标敌人的编号 验证一下。好,我们再来一遍 说出来,好,一号三除,二号三除三号三除四号攻击,六号攻击,十号攻击。好,我们这样的话呢就把我们监控到的在我们攻击范围内的敌人都给干掉了。好, 到这里我们这一集的目标呢就已经实现了,我们的炮台能够跟进每一个敌人,并且呢找出来我们要攻击的目标敌人,并且把他干掉。 但是这个攻击和敌人消失的这个特效呢,我们还没有做,只是让他突然把自己删除掉了。那接下来的 后面几集呢,我们会把这里面涉及到的一些细节把它完善一下,并且呢让啊我们的炮台有各种选择,让敌人有各种造型,总之呢是让游戏更加好玩一点。最难的部分我们已经在第三集完成了,第三集的确很难,大家一定要有耐心,根据老师的 代码呢,把它好好的整理一下。那这里呢我把代码呢稍微放大一点,大家可以就这一部分呢 查看一下,比对一下代码, 你可以暂停到某一部分去看一看是不是跟你的有什么不一样的地方。 好的,我们今天的教程就到这里了,我们下期再见。

在这个教程中,我将跟大家一起编程,从零开始做一个塔防游戏,这是我们教程的第九集,今天我们来实现一个酷炫的激光炮台,首先来看一下效果,点击滤镜之后,我从商店里面挑选一个激光炮台,放在这个位置,点击星光卡机后, 当他敌人进入攻击范围之后,我们会发射一个激光,能够看到这个激光炮台的攻击呢,是范围性的伤害。 好,话不多说,我们开始编程,首先第一步我们要画一个激光炮台的造型啊,这一步呢,大家依然是根据自己的创意发挥一个你想象中的激光炮台,这里呢,老师加快操作一下。 好的,我们的激光炮台的惠子呢就完成了。接下来呢,我们来编码,之前我们呢只有两个炮台的克隆底在商店里 里面,现在呢我们要让他克隆出来三个,让他摆在双倍炮台的下面。先完成这一步, 在代码里面我们重复两次呢,改成重复三次,重复三次,然后每一次的图标呢还是增加一,当这个克隆体启动的时候呢,我们需要去判断一下,如果他的炮台编号是三的话,我们就需要给他换成对应的激光炮台的造型,我们把造型名称改一下激光, 如果炮台编号等于三,换成激光炮台这个位置呢,我们往下稍微挪一下,一百零九到五十九,中间割了五十五十,再往下我们这改成九, 然后将激光加入炮台类型,价格呢我们高一点,定成一百五。好,我们试验一下, 打开商店,一个两个三个好,这个对应的图标已经有了,但是这个价格显示的还是普通价格,因为我们这个对应的描述里面还没有加上。那接下来呢,我们把激光的价格给他写一下, 复制一下,改成选择激光价格一百五。 一,普通炮台,双倍炮台,激光炮台没有问题。好,那当我选择了这个炮台之后, 他是不是应该跟随我进行移动啊?像我们的呃,双倍或者普通炮台一样,那我们在炮台里面呢要进行一些操作 啊,这个地方我们能看到在射击动画,这个地方呢,我们以前只设定了普通炮台和双倍炮台, 那接下来呢,我们要再设定一下,如果他是激光炮台的话,我应该怎么办?这里有一个小细节,我们要注意一下这个地方是不是仅仅是控制他射击的动画呀?正常来讲,我们点了这个激光炮台,是应该能够把它跟随鼠标进行移动的, 这里之所以没有跟随我们进行移动,是因为我们的价格是一百五,但是我只有一百块钱,买不了。我们首先呢把自己的钱设定一下,来一个八百, 好,金币是八百,这时候我们再去看激光价格,他是可以跟随我们进行移动的,只是这个造型没有变化,是因为这里我们还没有增加。那这个地方呢,我们来优化一下, 如果他是激光炮台的时候,我们怎么办?是不是还需要给这个激光激光的炮台增加一些,他射击的这个效果呀?类似于我们的双倍炮台。 那我们在造型里面呢,再给他添加两个攻击前的准备动作,我们把刚才的这个图标呢复制一个过来,好,激光,然后呢来一个,因为激光呢是通过电器动作,所以我们给他来一个两个充电的阶段,充电一和充电二代表他的蓄力。 那这个地方呢,我就仅仅改变一下它的这个颜色,当然大家有更好的想法呢,可以尝试一下,我把它的颜色改浅一点,这是五十五,好,下一个 好,这是默认的状态,这是充电的两个状态,充好电之后断就可以发射出去了,我们回到代码区域, 那这个地方呢,我就要加一个,如果他的炮台类型是激光的话, 我首先给他换成我的充电一造型,摆个 pose, 然后等待啊,零点零五,太少,零点三秒之后呢给他换成我的充电二,然后再等待零点三, 这时候呢才开始攻击,瞄准他,并开始攻击,如果真的要攻击的话,这时候呢我不能直接给给他这个这个地方简写,我要呢,因为我们激光是一个范围伤害,这个地方要特殊处理一下。 这里呢我们要让我们的激光显示出来,那这个激光呢,它显示在什么位置呢?这个地方呢我们就要把它记录一下当前这个炮台在什么位置,因为我们有可能克隆出来多个激光炮台,我们要记录一下我们的,呃, 待会这个激光呢显示在哪里?那现在分两步,我们首先呢把激光的绘制一下,然后呢再呃在这个地方记录一下激光的坐标,我们画一个激光, 改个名字。这个地方呢有一个细节,因为这个激光呢是在我们炮台的这个炮筒这个地方,所以我们要让他的中心点呢,靠在这个往右一点点,让最左边,在我们造型的这个中心的这个地方一个小细节,大家注意一下, 你把颜色改成激光那样的黄色,差不多稍微小一点,然后给他来一个轮廓, 好,这样看着差不多,那这个轮廓都有什么样的功能呢?他待会呢,要根据我们 设定的炮台的坐标呢,他显示到对应的位置去,那我们先完成刚才这个炮台,他应该记录一个什么样的位置,这里在这个地方呢,我们先不记录他的血量。这个 地方呢,待会呢我们在敌人那里再做,如果他可以被攻击的话,我们就把他的当前的炮台的坐标呢撑起来。这是我们待会激光坐标,这是激光,要激光要移动过去的地方,建立一个列表,他叫激光 ip 坐标, 还有激光歪坐标,同时呢要有一个激光的方向, 好,我们把它放到一边,待会呢正好监控一下他们,这也是一个调试的技巧啊。之前有很多同学留言,如果你的 效果不理想,有问题的话,你一定要把相关的变量的勾选出来,观察一下这些变量的变化是不是我们理想的那样好,如果可以攻击的话,我们就将它的 x 坐标,外坐标和 方向都给他存起来,将 x 坐标加入激光的 x 坐标,复制一下,复制一下,将 y 坐标加入激光的 y 坐标,将方向加入激光的方向, 好撑起来。然后呢,我们最后换成激光的造型,这是要发射出去,最终发射出去了,好放到里面, 我们验证一下,购买一个放到这里出现,好能看到造型的确在发生变化,对不对?好,再来第二个, 好在攻击也在攻击好,就是这个攻击的间隔呢?瞄准的间隔稍微有一点点问题,我们看一看 是因为我们之前这个地方呢有一个等待零点八秒,我们是为了让炮台的攻击有一个间隔,但是呢我们的炮台瞄准呢也受这个零点八秒的限制了,我们把我们把这个地方呢给他优化一下,把这一块呢单独拿出来,让我们的克隆体, 当炮台克隆体出来之后呢,他可以重复的去瞄准,不一定攻击,但是可以瞄准重复执行啊,这部分代码瞄瞄准这个敌人说出来他的编号,那至于是否攻击呢?还是受上面的影响,只有这个变量设定成 yes 的时候,我才能够去攻击他。 好,一开始我们要把这个坐标呢全部给他清空,所以我们要在前面的初始化这个地方给他,加上我们这一部分初始化都是在敌人这里做的,所以我们统一把它在这里再 做一遍,删除敌人的 x 坐标的,呃,激光的 x 坐标的全部项目,删除激光的 y 坐标的全部项目,删除激光方向的全部项目,然后同样的这三个模块在预期这里也有 好空了,我们放一个激光再放一个,这时候我们能看到瞄准的这个过程呢,就不卡顿了,他比较平滑,这次不攻击,他也会一直去侦测敌人,为下一次攻击做准备。 那接下来呢,我们就要去处理一下这个激光了,他不能在这个地方不动,因为我们有可能发射去发出了数据多个激光,所以激光这个角色呢,他是要克隆出来德国角色,然后移动到我们记录的这些位置上面去的。那这一部分呢,我们来做一下,当然了,至于每一个 这个激光克隆体移动到什么位置呢?每一个编号是不一样的,所以我们一上来呢,要给他建立一个激光编号,然后这个激光编号呢,适用于当前角色,每一个都不一样。好,当我们的滤芯被点击的时候, 首先呢把本体隐藏起来,然后将我们的激光编号设定为零, 然后稍微等一会再开始去克隆,免得受上一次的影响,我重复执行去监控要不要克隆出来一个新的激光。因为克隆出来这个激光克隆体呢,他的动作比较多,所以我们给大家通过一个知识积木来做 生成激光特隆起。 好,那这个生成极光可龙体,他都有什么功? 首先是我这个列表里面有几个,有几个数量长度是多少,他就应该克隆几个,所以我们来一个重复执行,直到重复执行克隆自己,直到你的编号等于我这个列表的项目数,我们来一个激光编号,等于 列表里面的相互数, 激光的 x 左标,歪注标方向都可以啊,直到他们相等。那每克隆完一个,我是不是应该将我的编号增加一啊?因为一开始是零,所以我们一旦开始克隆,就先把它增加一, 增加一。那除了我们要让激光编号增加,克隆自己还要有什么动作呢?就是让这个克隆体呢,他移动到我们对应的位置上面去,那这部分呢,我们也直接在克隆的时候给他做了,让他面向, 面向什么什么方向,移到什么什么位置啊?面向哪个方向呢?一定是我们这个列表的 激光方向的第几项呢?克隆编号,像激光编号这个方向他是多少,我就让他面朝,那然后这个位置呢,也是一样,他需要移动到我激光 x 坐标的的激光编号项, 歪坐标也是激光歪坐标的激光编号项。好,你是几号编号?你就移动到我记录的这个位置上面去。 好,那克隆起每次出来都需要干什么呢?他首先要显示出来,对不对?我们来一个, 当克隆体启动时,他首先要显示出来,然后呢等待零点三秒, 我让他慢慢的隐藏掉,激光的效果呢,慢慢消退, 重复执行。然后呢把他的熏像特效, 虚相特效增加,慢慢这二十五改成二十吧,那这样的话,重复执行五次之后,虚相特效呢就变成一百了,所以这个地方改成五没问题。最后呢把它删除掉, 来,我们试一下效果,一开始他是隐藏的,我们脱一个激光点击新关卡,好攻击他了,对不对?好,没问题,没问题, 好,那这个效果呢,我们就基本达到了啊,这个地方有一个小细节,我们再看一下, 好,再点击这个位, 是不是不太对啊?并且呢这个里面的东西呢,应该是没有对应上哦,因为这个编号呢,我们要让他重新从一开始,所以这个地方我们要加一个,当他接收到新关卡的时候, 让我们的激光编号呢,重新从零开始。 激光编号重新从零开始,这个地方呢,我们要应该当他进入新关卡的时候呢,从编号从零开始,这样我们来一个刚接收到新关卡,让编号从零开始, 抽烟一下,一看是空的,放一个炮台攻击攻击攻击, 好,这时候呢我们再来一个新关卡,发现,哎,他删除了,又重新开始了,这个效果没有问题, 这个地方会有一些前代的问题,我们提前处理一下,他显示出来的时候呢,一定要要让我这个激光呢稍微往后移一成一几成,要不然他会把我们的炮筒呢给盖住啊。虽然我们这里没有出现,但是有一些同学可能会有这个问题,我们提前把它处理了,后移后一个十成吧,这样呢他就不会挡住炮台了。 同时当这个坑体出来的时候,是不是要去看一看他有没有碰到敌人呐?所以我们通知一下敌人,这个地方已经出现了广播一个事情,激光击打敌人, 那我们的敌人收到这个消息之后呢,就要去判断一下他有没有碰见我们的激光了,所以我们在敌人这个地方呢,也要去加一个是四键的处理,当接收到 激光击打敌人的时候,你不能接收到这个消息,就简写对不对?我要判断一下,判断一下我是不是被你打中了, 并且呢我还没有碰见这个舞台的边缘,所以我们这里来一个,并且如果你广播到这个接收到这个消息,并且我真的敌人碰到了激光, 然后呢我还没有碰到舞台边缘,舞台边缘碰到舞台边缘不成立,这时候呢我就可以把敌人的血量呢给他减少一点点了,我们把之前的这段代码呢给他复制过来, 将敌人的血量,然后呢哪个像给替换掉呢?是我们的克隆编号,像谁碰到了都要简写, 这就是范围打击,跟刚才前面几个这个炮台是不一样的,我们来抽烟一下,这个呢 已经验证了,可以生效了,就可以把它隐藏起来, 激光编号也隐藏起来,在这个地方激光编号 点击率齐 激光好,我们看到他是一个范围的伤害,再来一个, 好,一下子杀死了三个对不对?两个,最后两个一下子全杀死了,这是我们激光炮台的呃范围伤害的效果。最后呢我们再看一下代码,主要是在激光炮台里面增加了一个编号,然后在炮台里面增加了一个 新的类型,然后增加了激光的描述,增加了激光的这么一个打击的效果 后呢,在敌人这里判断一下攻击到他之后他应该怎么简写?是碰到了克隆编号都应该简写好。最后我们来一个小伙展示 多放几个炮台,激光炮台, 好,我们今天的课程就到这里了,拜拜。

在这个教程中,我将跟大家一起编程,从零开始做一个塔防游戏。这是教程的第二集,在这一集中,我们会监控每一个敌人的动向,并且开始建设我们的炮台。 如果你还没有看过第一集,可以点开主页查看之前的视频。 接下来我们开始编程,为了实现监控每一个敌人动向,我们需要建立一个列表,列表相对于变量,他存储的东西可以更多,因为我们有很多个敌人,所以我们需要存储的东西特别多。我们用列表来进行 关于列表的基础知识呢,在这里呢,老师就不多讲了,感兴趣的同学可以自行啊搜索学习一下。我们第一个列表用来监控敌人的啊,位置, 位置之其中之一的 x 坐标,所以我们把名字起成敌人 x 坐标,然后确定好,那他的位置呢?还有另外一个敌人的歪坐标, 歪坐标,好,有了这两个列表,我们就可以知道这个敌人随时随刻他在什么地方。另外呢,我们再建立一个列表,叫敌人进度 好,这个呢,用来存储这个敌人,他已经前进到呃,整个整个路程前进了多远啊?再建立一个列表,敌人编号 好,这个用来存储我们克隆出来的这么多敌人,他们每一个的编号是多少。好,那这些, 呃,列表呢?我们一开始使用的时候,首先要跟变量一样做一个初始化,这些一开始肯定都是空的,所以我们一开始要删除他们里面的全部项目,好,把这个改一下, s 坐标,歪坐标, 还有敌人禁毒,我们把它放在最前面,一开始就把里面的内容全部删除,然后呢我们先往敌人编号里面添加一些东西,这个呢是跟我们克隆体直接相关的,每一个克隆体都应该有一个自己的编号,所以我们建立一个变量, 建立一个变量,克隆体编号仅适用于当选角色,因为每一个克隆体的编号都不一样。确定,然后 后一开始把克隆体设定成零,在我开始克隆之前啊,然后呢再重复执行里面把克隆体增加一,这样的话第一个克隆体他就是一,然后第二个克隆体他的编号就是二。那现在呢,这个克隆体还没有沉到我们的 这个列表里面去,应该在什么地方做呢?在当我们克隆体启动的时候,我们要把编号呢,把它放进去,所以我们第一个将什么放到敌人编号这个列表里面呢?将克隆体编号这个变量 好放进去,那他的 s 坐标、 y 坐标和进度一开始是多少呢?这是我们的初始化,一开始 s 坐标肯定是空的, 对吧? 然后歪坐标也是空的, s 坐标 空的,我也主标是空的,还有他的进度呢啊,他就不是空了,他的进度是零对不对?进度一开始是没有走的,是零啊,当然这个呢用空也可以,后面我们在单独处理一下就行,这样为了简单我们一次性处理好,这样的话我们就做好了列表,在每一个科隆题启动的时候,他的初始的值。 好,我们可以先验证一下这样有什么效果好都添加了一个东西,然后啊,这个地方因为刚开始我们有啊,没有删除掉,我们把它删除掉, 再来一次会有四个东西进去,这是列表,然后再出现第二颗龙体的时候又会出现一个,待会呢我们再演示最终的效果。 好,那这个 s 坐标、 y 坐标和进度肯定是随着这个克隆体的移动要发生变化的,所以在这个重复执行移动的过程中呢, 我们还需要把他们三个进行一个数据的更新。好,他们应该放在这个地方。 那 s 坐标呢?是比较简单的,因为我们在运动模块里面有一个 s 坐标,歪坐标的直啊,他们呢是实时反应当前这个克隆体在什么位置,我们只需要把它加到列表里面去就可以了,他们就会不断的发生变化。 好,如果这样的话,我们会每一次都把 s 坐标加到敌人坐标里面,这样啊,是不太合适的,给你们演示一下效果, 比如说这样的话相当于每一个克隆体他会越加越多,这样显然是不对的,我们是希望一这个地方一直显示的是克隆体一的 s 坐标,他是在不断发生变化的,所以我们应该应该用列表里面有一个替换,替换把第一 边把 x 坐标里面的第一项换成 x 坐标,对吧?好,那每一个克隆体他对应的像素是不一样的,比如克隆体一在一号,克隆体二在二号,所以这时候我们就要用一下我们克隆体编号,这个变量 好用,他呢来找到我们对应的克隆体他的这个位置在哪里,然后更新他的 x 坐标,那歪坐标也是一样,敌人的歪坐标更新成这个克隆体,他现在的歪坐标。好,这个删除, 那敌人进度呢?也是一样,将敌人进度更新成他不能直接替换过来坐标,他应该更新成什么呢?因为敌人进度呢,他是数值越来越大的,他 应该是根据上一次的敌人进度的直加上他的移动的速度,所以我们应该先找到上一次的 他的进度,所以在敌人进度里面,我们找到第几项呢?克隆体编号这一项,这是他上一次的进度,然后我们给他加上他每一次的移动速度, 加上他每一次的移动速度,然后呢把它替换掉 往这边一点。好,这样的话呢,这三个,这三个列表就会根据我们克隆体的移动而不断发生变化。我们试验一下效果,一开始全部删除, 然后能看到 s 坐标有十个不断在发生变化, y 坐标有十个不断发生变化,敌人进度有十个不断发生变化,敌人编号呢,有十个不发生变化,因为我们只有十个。 到这里我们就实现了对每一个敌人情况的监控,那后面呢,我们就可以对他们展开攻击,那攻击呢,我们就需要一个炮台,所以我们首先来绘制一个炮台 啊,绘制炮台的过程呢,跟之前我们绘制呃这个地图和路线呢就一样了,我们每个学生根据自己的想象来自行发挥, 当然你也可以参考老师的这么一个呃,比较简单的一个风格。 好,到这里呢,我们一个基本的 炮台就已经绘制出来了,一定注意刚才的这个中心位置,我们把炮体的中心位置放在中心点这个方向,现在呢,我们把呃这些列表呢隐藏一下,来看一下炮台实地的效果。 好,这个炮台大小呢?稍微有点大。对,还行,我们可以全选一下,然后稍微调整调整它的大小。 好,那在这里呢,我正好讲一下我们这个中心位置点,重新回顾一下这个点一定要在中心位置,然后炮筒呢, 把它放在这个炮体的后面,用这个放在最后面,这样的话我们一个基本的炮台就绘制完成了。我们最终要实现的效果呢?是这个炮台呢,他在这边有一个商店的概念,我们里面有多种造型,可以啊,选择不同的造型,把 他摆在不同的位置啊,那所以虽然我们现在只有一个造型呢,我们先把这个功能坐在前面,让他放在啊右上角,我们给他来一个稍微小一点效果,选中之后再把它放大百分之六十。 好,没问题,往上面拖一拖,一开始加个绿旗,大小设定成多少?然后位置呢?给他固定一下造型呢,给他切换成造型一。 好,没问题。然后呢当我点击这个炮台的时候呢,我希望呢这个本体在这个地方是不移动的,然后出来一个克隆体跟着我的鼠标,这样的话我放在什么位置是控制这个克隆体就可以了。 那为了实现这个效果呢,我们需要有一个呃控制变量,用来标志我有没有点击到这个本体,这样的话他 才能跟着我去移动和放置。我们建一个变量,先建一个变量仅次用于这个炮台就可以了,叫呃,鼠标操作。 一开始的时候这个鼠标操作呢啊,什么都没有,是空的啊,当我点击他之后呢,这个鼠标操作变成选中就可以了,我们加一个点击的效果,重复执行,如果他被点击, 被点击呢,是两个事件的总和。首先呢,我们鼠标要碰到 这个角色,碰见鼠标指针,角色应该碰见鼠标指针,并且鼠标应该按下,按下鼠标, 这个代表着我鼠标点击了这个角色,如果点击了之后呢,我们把这个鼠标操作设定成选中好,设定成选中,选中好,这时候呢他就当这个克隆体启动的时候 选中,这应该克隆一下自己,对吧? 克隆自己,但是这个地方有一个细节要注意一下,如果我这样点击的话,好, 这其实已经有了好几个了,对不对?已经好几个了,我只点了两下,他有这么多,说明这个事件执行的特别的快,我们这个地方要加一个在克隆体之前,什么时候克隆呢?他跟着我的鼠标进行移动,当我 按下鼠标的那一瞬间,他是不克隆的,只有我松开的那一瞬间,他才会生成一个克隆体,并且跟着我的鼠标进行移动, 那这个松开怎么操作呢?我们把这个复制一下,这个是点击他松开的话,是我碰到鼠标碰到了这个角色,但是呢鼠标是松开状态,所以我们加一个按下鼠标不成立就可以了, 把它修正一下,这个就代表着我碰到他点击之后松开的那一瞬间,然后呢我克隆自己,等这件事发生的时候再克隆自己,我们加一个等待, 等待松开鼠标,然后来一个克隆体,来一个克隆体,当这个克隆体出现的时候呢,我首先让他稍微变大一点点,跟我们的本体有所区分,然后呢他就应该重复执行, 跟着我的鼠标进行移动了,跟着我的鼠标进行移动,移到鼠标指针位置来实验一下,点击,哎,跟着我的鼠标进行移动了,哎,我再点击鼠标的时候,他是不是没有放下呀?我们来做一下这个功能, 这个呢就要利用到我们鼠标的这个选中的状态了,现在呢还是选中的这个变量,变量还是选中的值我们松开的那一瞬间呢,把这个变量改掉就可以了。我们这里首先加一个判断,只有当这个变量是选中状态的时候,他才跟着鼠标进行移动, 如果不是的话,他就不跟着他移动了,等于选中,然后一道鼠标指针。另外一个情况 呢,当我点了鼠标之后呢,我希望他能够把这个变量修改一下,如果我点击了按下了鼠标, 他就应该在松开的时候,他就应该呃变一下这个变量,跟这个一样,当按下鼠标不成立的时候,等待 松开鼠标的一瞬间,我把这个变量的操作呢给他设定成空,不再次选中了, 好,当这个变量变成空的时候,这个条件是不是就不成立了,他就不会再跟随鼠标进行移动了。 走,你点一下,停在这了,再点一下,又送了一个新的,这样我们就可以随时来复 至多个这个炮台。 但是现在还有一个小小的问题, 当我去放置这个炮台的时候,我是不是并不知道他的攻击范围啊,只能放一个大概的位置来。为了解决这个问题呢,我们来绘制一个角色来代表着他的这个攻击范围,把名字改一下攻击范围,顺便把炮台的名字也改一下 炮台好,这个攻击范围呢?老规矩,我们按自己的想象来画一个,那这里呢,我就选成一个白色的,有一点点边框的这么一个 啊,造型啊,记住注意按住 shift 键,按住 shift 键就可以啊,大概这个攻击范围吧,这样的话不至于太 夸张。好,这样就可以了。然后呢,我们来控制这个攻击范围的角色什么时候显示啊?这个呢,又需要一个变量来这个控制,我们创建一个变量,因为这个显示与否呢,跟我们炮台的这个 状态也有关系,所以我们希望这个变量呢,能够让这两个角色都看得见,我们选择适用于所有角色叫是否显示攻击范围啊?致辩一次啊,这个变量的名称好,一开始的时候我们把这个变量呢 设定成 no, 不显示,需要他显示的时候,我们改成啊 yes 就可以了,所以我们加一个呃,这个判断条件,如果这个攻击犯 认为啊变量等于 yes 的话,他才显示,我们该找到这个变量,如果他等于 yes, 我才让他显示出来, 如果他是 no, 我就让他隐藏,那刚开始一开始是 no, 所以他肯定是隐藏的,对吧?那什么情况下他应该显示呢?哎,当我们的炮台克隆出来一个新的的时候,跟随鼠标移动的时候,他是不是应该显示出来呀?那这个地方我们把它改一下,将 是否显示攻击范围设为 yes, 然后当按下的时候是不是就把它 隐藏掉?假承诺,来,我们试验一下,点击显示了放下 no, 但是他是不是并没有跟随我们的炮台进行显示啊?啊?那这个地方我们跟炮台一样,当他显示出来的时候,加一个移道鼠标指针位置, 哎,是不是可以了?那现在呢,还有两个问题,第一个是炮台看不见了,另外这个白色呢,有点,呃,把我们的路径遮住了,所以我们给他加一个呃透明度的概念,在特效里面加一个 虚像特效设定成五十,我们看看效果,在这个地方 五十,哎,这个状态差不多,我们把它放在这里,那同时呢,我们让他遮住这个炮筒,让炮筒也有这个虚线的概念,所以我们把它放在最前面, 哎,再试验一下,哎,这时候这个效果就比较理想了,松开的时候呢,他又会消失。好的 好,那我们今天的呃教程呢就到这里,我们今天实现了通过几个列表来监控每一个敌人的动向,并且呢开始建设了我们的炮台, 然后添加了一个攻击范围的角色来辅助我们放置炮台的这个过程。那至于怎么用这个炮台去攻击这些被我们监控者的敌人呢?我们在下一集再进行讲解。 好,如果你喜欢我的视频,请记得帮我点赞,有问题的话随时在评论区里面留言,我们下期再见。

进防炮太帅了,必须手搓一个!先把双炮管做出来,用皮筋和弹簧做击锤,再加四根旋转的拨杆,轮流拨动机锤,就可以连续发射了。最后用弧形齿条加齿轮盘做俯仰偏航机构,大功告成。来吧,试试威力如何, 是不是很酷?小朋友们快来跟杨洋老师一起学习机器人编程吧!

