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

在这个教程中,我将跟大家一起编程,从零开始做一个塔防游戏,这是我们教程的第七集,在这一集中,我们会实现一个商店的功能, 当我点击滤镜之后,右上角呢有一个按钮,点开之后呢,会显示我们的炮台,商店里面呢有我们各种各样的炮台,当然现在只有一个普通炮台,点击它之后跟之前一样可以啊,购买一个炮台可以看到我们的金币呢,减少了五十块钱, 点击关卡呢,依然跟之前一样可以进行攻击,还可以再次购买。好话不多说,开始编程来实现这个功能。 首先打开我们之前的作品啊,在开始新功能之前呢,我们先啊完善几个遗留的问题。第一个呢,是啊,有同学在评论区里面看到我们上一集 这里多了一个碰撞检测二,这个是老师测试用的啊,我们啊可以忽略他,我在这里呢也就直接把他删掉了,这是第一个问题。第二个是呢,有同学问老师,为什么有时候这个血条没有显示,那很有可能是你这个地方的判断条件出了问题, 注意看我们的血量条什么时候出现呢?一定是这个敌人的血量大于零的时候他才出现,如果你这个地方有时候写了一个默认的五十,他是不会出现的,只有改成零 好,他才会出现。然后另外呢,有些同学反映这个血量条一闪一闪的啊,那这是为什么呢?是我们在这个知识积木里面有一个属性,需要设置一下 啊,默认这个地方呢是没有勾选的,我们要勾选一下,运行的时候不刷新屏幕,这样的话呢,这个血量条就不会一闪一闪了 啊,最后一个啊,同学们留言的问题是什么?我们的敌人啊,这个关卡到第三关的时候呢,他就不出现了,那是因为我们在前面啊,只设定了三关啊,看这里,关卡一,关卡二,关卡三,如果你想还有第四关的话,就可以复制一下。 好,如果关下等于四的话,你希望出来什么样的敌人,多少个什么间隔啊,这可以自己设定啊,你可以多设定几关,没有问题。好,那接下来呢,我们开始今天啊新的功能,为了做商店呢,首先我们要绘制一下刚才右上角的那个角色。 好,那这一部分大家依然是按照自己的想象来绘制一下,我这里呢快速进行一下。 好,这样我 这个基本的按钮呢就绘制完成了,我们把它往右上角靠一靠,好,大概在边缘这个位置。好的,然后另外呢,我们还需要一个商店的背景,我们再绘制一个。 好,差不多他是白色的就可以了,放到中间位置。 好的。 好,那接下来呢,我们来给这个角色呢进行编程。他首先的第一个功能是一开始的时候要显示出来,当滤镜被点击,他应该显示出来。 好,然后呢,我们固定到这个位置 好,然后什么情况下应该打开商店呢?当我点 移他的时候应该打开商店,对吧?我们可以再给他加一个特效,当我的鼠标碰见他的时候呢,可以亮度稍微调整一下,跟之前这个地方一样,我们加一个重复执行, 如果碰到鼠标指针加个如果,那么,否则,如果碰到鼠标指针,我把它的亮度 设定的大一点,将亮度设定成三十,然后如果没有碰到的话,将亮度设定成零,测验一下, 好,有一点变化,对不对啊?没问题。然后当我点击它的时候呢,才是真正的打开商店。但是这个地方呢,它有可能有两种状态,这种状态打开的点击它是打开,刚打开之后再点击它是不 应该关闭啊,所以我们需要一个变量的来记录他的状态,方便我们进行控制。我们建一个变量叫打打开方便。 好,一开始的时候这个变量我们把它设定成打开商店, no, 没有打开的状态,当我按下鼠标的时候呢,他就是打开状态了,来一个如果按下鼠标, 我就应该把它打开,当然呢,这个地方是需要判断的,如果现在是 no, 我就应该打开,如果现在是 yes, 是不是应该关闭啊?所以这里呢又需要一个判断, 按下鼠标之后看一看当前是什么状态,如果当前这个打开商店是 no 的话,我就应该打开商店,我们广播一个消息,因为可能好多地方都要用广播一个打开商店, 然后如果是 no 的话,我们广播一个关闭商店, 好,我们把它放进去。 好,来我们观察一下这个变量先,当中先别点击我,点击他, 点击他,哦,这个地方没有发生变化,我们看一看,为什么一开始弄,哦,忘了把这个变量设定一下,打开商店,将它设定承诺,那我们直接通过一个接收, 如果接收到打开商店的话,我需要把这个变量呢重新设定成 yes, 如果关闭商店的话, 打开方面设定成 no, 这样方便他来回转换,点击变成了 yes, 再点击变成了 no。 好,基本的状态控制可以了,然后不同的状态,这个按钮的位置和方向是不是不太一样?我们把这个设定一下, 一开始默认在这个位置,那他关闭的时候呢,也应该在这个位置,同时呢这个默认方向是面朝右的。 好,这个地方有一个小细节,大家一定注意啊,虽然这个箭头是面朝左的,但是我们说的是整个这个角色,他默认这个状态呢是面朝右的状态, 如果我们在这个地方把它改成面朝煮煮的话,你会看到他这个呢就会发生一个颠倒, 好,发生了一个颠倒,这是我们希望打开状态,打开商店的这么一个状态,同时打开商店这个位置是不是应该发生一个变化,他跟我们的这个角色呢,要相互配合,我们把这个呢也显示出来, 往里面靠一靠,大概这个位置,那我们还有点大 好,差不多这个位置,这个呢就要根据大家的啊画图的大小灵活去调整了啊,这个位置呢,我们固定一下,这是打开的时候。 好,这个歪歪柱标呢,我们让他保持一致, ctrl cctrl c 都是一百三十七,来测验一下 下。好,先把这个隐藏好,当我点击率点击这个按钮的时候,哎,弹过来了,再点击,他又回去了啊,没有问题,这样的话,我们第一个,第一个这个按钮,商店按钮改个名字, 商店按钮的功能就做完了。那接下来呢,我们来做一下这个商店的背景名称改一下商店背景 他有什么功能呢?一开始他应该是隐藏的,我还没有打开商店之前,他应该是隐藏的,当接收到我们发过来的打开商店的消息的时候呢,他应该显示出来, 他应该显示出来,并且移动到,刚才我们已经调节到正确的位置了,对不对?我们直接拖出来, 用到这个位置,好,没问题,预计被点击隐藏,同时接收到当商店,当打关闭商店的时候,他也应该隐藏, 关闭商店,他也应该隐藏。来,我们测验一下,点击打开,再点击关闭,点击打开,再点击关闭。好,没问题。那现在呢,我们就应该往我们的,往我们的商店里面加一个炮台了,对不对?好,那这个地方呢,我们要注意啊, 当我点开之后呢,这个炮台显示在这个地方,把它拖出来,他应该跟之前一样能够啊放置在不同的位置,那这里呢,为了方便控制呢,我们把这个点击图标的这个呢跟之前的炮台有所区分,让他单独是一个角色,我们这样来做,我们把原来的炮台呢,直接 右键可以复制一个角色,大家能看到吧,直接连他的造型带他的功能呢就都有了。 那这时候呢,我们把他的这个功能改一下,首先名称改成炮台图标,他只是负责一个这个点击克隆的功能,然后这个图标呢,我们啊这些瞄准的东西呢,都不需要图标来做了,我们把它删除 好,你看这样没办法删除,是因为这里用到了这个功能,我们把它删掉,删掉, 删掉好,这个也删掉 好,这样就没有了,那这部分功能我们把它优化一下,一开始这个图标是不是也应该是隐藏的? 所以一开始我们把它隐藏起来,什么情况下应该出现呢?是不是当接收到打开商店的时候,他应该出现呀?好,我们把判断这一部分拿过来,原来的这个东西有在一个地方设定就可以了,所以这些都可以去掉。 当然了,打开商店我们的这个图标是不是应该显示出来,显示出来,同时给他固定一下位置,我们看看哪个位置合适, 大概放在这个位置吧。好,可以灵活调整啊,我们把它打开, 开始歪了。好,这个位置再调整一点。好, 那一开始呢,我们把它移动到这个位置,然后呢他就应该去 重复的去判断有没有碰见鼠标指针,有没有按下鼠标了。好,那这里呢,我们稍微的调整一下, 我们碰见鼠标指针呢,让他有一个跟刚才这样类似的效果,所以这个地方呢,我们可以把它分成两个,如果,那么否则如果碰见鼠标指针了, 如果碰见鼠标指针,我们把它的亮度呢调整一下,跟刚才一样,亮度呢?调成 二十,然后如果没有碰见鼠标之针,还是恢复成零 好, 碰到他点亮了,然后这时候 如果你再按下鼠标的话,就跟之前一样了,我需要克隆一下,当然了还是需要把这个金币判断一下,如果我的金币大于四十九的话,我才应该把它减少,那这个鼠标操作呢,因为是给克隆体的,我们这里也就不需要了。然后呢,为了防止他出现太多个,再来一个 这个点击之后松开的操作,等待松开,然后这时候呢也就不能克隆自己了,要去克隆一下炮台,然后这个检测呢,也一样要克隆一下这个检测二呢,刚才我们删掉了,这个也不要了。好, 这样的话啊,我们这个图标的角色就完了,这个克隆炮台,那这个炮台应该有什么反应呢?在这里我们之前是不是有当周围克隆体启动的时候,他有对应的功能啊?啊,原来这个地方的 就不要了。好,相当于我们把它分成了两部分来,我们试验一下。好,一开始他是不是应该隐藏,我们把它隐藏掉, 然后克隆体显示出来没了,点击出来一个图标,碰到他有显示点击一下,哎,可以跟着我走了,哎,但是这个是不是并没有显示出来,我们看一看。为什么 好,刚才点击之后没有选中,我们检查一下,应该是这个炮台,刚才我们删除了一个克隆体里面的,当他被点击的时候设定成选中,我们把这个功能呢加回到克隆体里面,选中好,再测试一下点击, 打开商店,点击好,他能够跟着我们进行移动了,跟之前是一样的,放置第二个也第二个也可以。好,验证一下能不能攻击 好原来的功能,正常进行没有问题。好,我们把打开商店的这个电量可以隐藏起来了。 好,那现在呢还有一些细节要优化,当我的鼠标挪到这个炮台上面的时候,下面是不是要显示一下他的这个说明呀?所以我们呢再建立一个角色。 好,这个角色呢我们可以填一填他的一些这个描述信息,我们填一个这里呢我们选择自己喜欢的颜色,我快速的来做一下。 好的,那这个呢,我们就修改完了角色名称,我们给他改成炮台描述, 然后呢为了跟上面的炮台图标有所区分呢,我们往这画一条横线,在商店里面给他加个横线,按住序谱的可以画直线,大概这个位置吧,太高了,往下挪一挪,箭头选中 好,差不多把这个文字呢,我们往上稍微拖一拖,好这个位置好。那这个 炮台描述都有什么样的功能呢?我们来验证一下。首先当利息被点击,他应该是隐藏的 隐藏显示,当角色被点击,然后呢一定让他固定在这个 位置,我们把它确定一下,免得不小心拖动了。然后当我打开商店的时候呢,他应该出现, 当我打开商店的时候,他应该出现。当我关闭商店的时候,他应该隐藏 好。然后这个显示呢,因为不同的这个炮台,他显示的名称也显示的文字应该是不一样的,所以这个地方呢, 我们提前做一个准备,并且当我没有选中这个炮台的时候,他是不是应该不应该显示啊?所以这个地方呢,我们通过一个变量来控制,叫 炮台描述 按钮吧。炮台 描述编号 好,炮弹描述编号, 这个编号是怎么修改的呢?我们在炮台图标这里,当我碰见,当我碰见这个图标的时候,我是不是可以把它设定成一啊?把它碰到,如果碰见鼠标指针,将 炮台描述编号设定成一,然后一开始的时候把它设定成零, 设定成零,那这个地方当他是零的时候,他就不显示了哦,忽略了一个细节,最下面也得把它设定成零,当我没碰见他的时候,他就不显示了。设定成零,然后这个角色里面呢,我们加一个,只有当他炮弹角色等于 一的时候才显示,加一个重复执行。如果,那么,否则,如果你的这个变量等于一,炮弹描述编号等于一,我就显示出来, 并且呢给你换成造型衣,否则就直接隐藏。 好,我们测验一下,点击预习,点开点,哎,鼠标挪上来,普通价格,鼠标挪开不显示了。好的,没问题,然后我们点击一下, 哎,可以克隆。那当我从商店里面购买了这个炮台之后,这个商店是不是应该关掉呀?所以我们再做一个增强,在这个炮台图标这里, 当我购买了之后呢,让他立即广播一个关闭商店,广播关闭商店, 好,广播一个关闭商店,然后他自己本身是不是就应该隐藏起来了?当他接收到关闭商店的时候呢?把自己隐藏起来, 哎,隐藏了对不对?好,没问题。但是有没有发现一个问题,当我鼠标挪到这里的时候,这个价格呢?就又出现了,这个价格就又出现了。 这个地方,因为这个炮台描述呢,这个地方呢,他还在起作用,所以你看他还是亮着的。我们呢,一个呢是为了解决这个 bug, 另外一个呢也是让程序更优化, 把这些不必要的重复停,重复执行内给停下来,我们在这里加一个,停止该角色的其他脚本,当我买完之后呢,这个这一部分代码就可以停掉了。 好,我们能看到哦,那他是不是应该隐藏呀?我们把这个呢再隐藏起来。 好,这个问题呢,跟刚才我们这个炮台图标这里类似,这部分代码,这部分代码是不是还是一直亮着呀?所以呢,他并没有及时的隐藏起来,我们这里也加一个,当他接收到关闭商店的时候呢,这个脚本就可以停下来了,这样他就可以隐藏的状态。 好,哎,这个状态这个文字呢,文,文字描述就没有了。 之后呢,我们在 有一点小小的优化,当我打开这个商店的时候呢,我让他来一个虚向的特效,这样是不是把我们的路线给挡住了呀?所以我们在这个地方给他加一个虚向特效,将虚向设定为 十,试一下,好,没问题,好。然后呢,有可能有些同学在做的过程中,这个地方会有成疾的问题,因为这个东西炮台跟下面的这个商店背景还有这个描述呢,他们 都在右半部分,有可能出现成疾的问题。我们把这个地方调整一下,这个商店呢,他应该在最最下面,所以我们先让他移到最前面,然后让他后移两程,后移两程, 然后,然后让我们的炮台和这个角色呢始终在最前面,这样的话他就不会覆盖了。我们往炮台图标里面给他加一个重复执行,移到最前面,然后描述这个角色呢,也是一样,重复执行,移到最前面, 这样的话他们就不会有看不见的问题了。哦,当我点击的时候呢,这个炮台能够出来,这个炮台呢,之前我们为了防止他遮挡住,一开始复制的时候遮挡住也可以加一个,当他一开始 出现的时候呢,哎呀,克隆,克隆出来之后呢,也让他一直移到最前面,然后让他往后移一点点,后移五成,好,这样可以避免你克隆 一瞬间,然后这个地方被挡住。好,我们测验一下, 没问题,没问题, 放一下,没问题,把这个边量呢给他藏起来描述编号。好的,那我们这次的功能呢就做完了,最后呢我们来回顾一下 大概的功能,大家也可以看一下代码。首先我们增加了一个商店按钮,然后呢这个是控制他的关闭和隐藏放大一点。 接着呢为了配合商店呢,我们建了一个背景,背景呢这个配合商店的打开和关闭,同时呢设定了一个虚向特效。然后炮台呢我们单独出来一个图标,专门用来控制,当点击图 标的时候呢,生成一个新的炮台更合理一点,这是他的代码。 最后呢当我的鼠标碰到碰到炮台图标的时候呢,显示一个描述,这是描述的功能, 描述的功能,当然一定要记住在炮台里面这个原来的这个点击之后克隆自己的功能呢要去掉,并且呢在克隆奇里面控制一下这个鼠标操作的变量。 好,这是我们本次视频的所有内容了,我们下次再见,拜拜。

这是我们塔防游戏的第三集,在这一集中,我们将会实现让炮台跟踪每一个敌人并展开攻击。 很多同学都在催促老师赶紧更新第三集啊,首先呢非常开心啊,这个系列教程得到了这么多同学们的喜欢,那我们第三集之所以更新的比较慢,是因为这一集是我们整个系列教程中最难的一集。 为了实现跟踪每一个敌人这个功能,我们要对列表进行大量的操作,并且呢会运用到两个数学公式。 当然呢,大家也不用太担心,在第三集之后,我们的教程呢就会相对简单一点,所以大家一定要攻克第三关。好,那话不多说,我们现在开始编程, 为了实现让炮台能够监控每一个克隆体的功能,我们呢去给他单独的 建立一个积木,这个积木呢就是专门用来监控敌人并展开射击的,我们制作一个新的积木,给他起个名字叫 炮台监控与射击。好用这个名字好,那这个模块什么时候使用呢?我们让他在放下鼠标之后, 放下炮台之后,开始一直监控每一个敌人,那我们把这个地方呢稍微优化一下,我们用成如果,那么否则, 如果等于选中让他跟随鼠标进行移动,一旦放开了之后呢,他就应该不断的去监控敌人,然后呢展开设计好,这是一个大的框架,我们 为了实现能够监控每一个敌人呢,我们需要有一个变量,当我找到了我的目标敌人之后呢,我要对他进行展开攻击,所以我建立一个变量啊,仅次用于当前角色叫目标敌人的编号,目标敌人 编号,我要去找到这个克隆体里面,我要先攻击哪一个好?这呢电量很多,我们把其他的先隐藏一下,然后还有啊,敌人里面的这些 好,是保留一个我们新征的好。为了找到这个目标敌人的编号呢,我们就需要把列表里面所有的敌人编号都找一遍,对不对?那么就再来一个检查 敌人编号,我要把所有的敌人编号呢都检查一遍,看谁在我的攻击范围之内,并且离我最远,先攻击哪一个好? 这两个变量,那一开始的时候呢,先把这两个变量的初始化一下。目标敌人编号刚开始不知道是谁就设定成空,那检查敌人编号呢?我从一开始去啊,检查一二四零,待会呢,一开始检查的时候把它设定成一, 每一次我都应该把我们所有的克隆体都检查一遍,看看谁应该被攻击,对不对?所以我应该来一个重复执行去检查。重复执行几次呢?我们的这个 敌人编号有几个,我就去检查几次,我们需要在运算里面找到有一个, 在这里面有一个项目数好,敌人编号的项目数,它里面有几个,我就去重复执行,检查几次。每一次检查的这个敌人编号呢,我都给他增加一,那这样的话,第一次检查的是一,重复一下,第二次检查的是二 啊,这里有一个细节,就是我这个敌人编号呢,他是从一增加到二,增加到三啊,按依次顺序增加的,但是我这个克隆奇的编号呢?可不一定,因为有可能我把第一个先打死了,那下一次我列表里面 敌人编号里面纯的,那这第一个呢?不一定就是一了,所以我需要找到我检查的第一个他的编号到底是几,所以我们还是需要用一下敌人编号的第几项。我检查的敌人编号呢,是第几项把它放进去, 比如说这个编号现在是我们把它设定成一的话,那他检查了应该是第一个编号,如果我二现在存在一里面,检查就应该是二了。我们真正要检查的敌人编号呢,应该是里面存的这一个,所以呢我再建立一个变量, 检查敌人编号他真正的 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 克隆体编号,比如说三他对应的编号是这个东西,然后呢把它删除掉,删除到敌人编号的这一项,好,这样子 我们再来测试一下,我们把炮弹拿出来,好,我们能发现这一次真的是监控到敌人之后呢,就把他给删除掉了,他从我们敌人编号里面呢也去除掉了。 好,最后呢从这里走的时候呢,敌人编号也就消失了。我们最后呢把这个炮台这里的这个说出是否攻击,改成说出目标敌人的编号 验证一下。好,我们再来一遍 说出来,好,一号三除,二号三除三号三除四号攻击,六号攻击,十号攻击。好,我们这样的话呢就把我们监控到的在我们攻击范围内的敌人都给干掉了。好, 到这里我们这一集的目标呢就已经实现了,我们的炮台能够跟进每一个敌人,并且呢找出来我们要攻击的目标敌人,并且把他干掉。 但是这个攻击和敌人消失的这个特效呢,我们还没有做,只是让他突然把自己删除掉了。那接下来的 后面几集呢,我们会把这里面涉及到的一些细节把它完善一下,并且呢让啊我们的炮台有各种选择,让敌人有各种造型,总之呢是让游戏更加好玩一点。最难的部分我们已经在第三集完成了,第三集的确很难,大家一定要有耐心,根据老师的 代码呢,把它好好的整理一下。那这里呢我把代码呢稍微放大一点,大家可以就这一部分呢 查看一下,比对一下代码, 你可以暂停到某一部分去看一看是不是跟你的有什么不一样的地方。 好的,我们今天的教程就到这里了,我们下期再见。

在这个教程中,我将跟大家一起编程,从零开始做一个塔防游戏。有同学留言说,我们的教程中只有一个炮台,是不是太单调了,能不能多来几种炮台呢?这个可以有,今天在视频的第八集中,我们就来完成这个功能, 当我点击日期之后,右边的商店里面,我们新增了一个类型的炮台,第一个普通的炮台,我们增加一个双倍的炮台,大家能看到他的炮筒呢,是有两个,两个都是可以攻击敌人的,我们看一下撞撞撞撞, 每一次瞄准他都要设计两次,这个我们今天来把它完成,话不多说,开始编程, 打开我们之前的作品,切换套炮台这个角色。我们首先呢绘制一个新型的炮台啊,那这个地方依然大家发挥自己的想象力,绘制一个你觉得比较新颖,比较有意思的 炮台,可以参考老师的,也可以大胆的发挥创意。 让我们第一个炮台,第二个炮台的默认造型就画好了,然后我们再画一下他攻击的造型,那这个攻击呢,我们就可以复制一下先绘制出来的这个,然后从普通炮台里面把这个 设计的动画呢给他复制一下,我们让两个炮筒依次发挥作用,粘贴给他,放在第一个炮筒这里放小一点好,然后再复制一下, 然后把这个放到第二个泡菜泡泡桶这里,这样交替出现呢,可以模拟出来两个泡桶攻击的效果。 好,那在这个炮台角色里面,我们就画好了第二个炮台,然后呢在我们炮台图标里面也依然需要这样一个 这样一个角,呃造型我们怎么办呢?我们把它可以两种房子都可以复制,你可以这样全体复制之后复制过去,也可以这样教大家一个方法,可以拖住他,然后到这个地方松手,你看看图标里面,哎,就有了, 好,那在这个地方呢,我们就可以把这个删除掉了,就保留这两个,因为他仅仅是用来展示这两个炮台购买的时候使用的,不需要他有射击的动作。啊。那我们这个炮台图标都有什么功能呢?我们来用编程实现一下, 目前呢我们只有一个炮台图标角色,那怎么让让他在这个地方显示两个呢?显然能够想到的是我们要用到克隆的功能,哎,我们先把这部分钟去做完, 我们每一个克隆的时候呢,我们给他一个克隆编号,所以我们在变量里面首先建立一个变量,每个克隆体都有编号,所以 要选择警示独立当前角色。这个呢,我们给他起名叫炮台图标编号, 一开始的时候把这个编号设定成零炮台图标编号,然后呢克隆两次, 好,每一次呢让他增加一克隆,自己将炮台图标 编号增加一 好,那克隆体出来的时候呢,就根据他的编号不一样,从而展示不同的造型。我们来一个当克隆体启动时,如果,那么,否则,如果这个编号 等于一的话,我们就换成第一个造型,炮台图标编号好,一定记录警示用于当前角色,如果他等于一的话,我们就换成第一个造型,第一个造型叫 costome, 我们把它改成中文名字, 普通。第二个呢,双枪的这个我们给他改,直接起名一个简单好理解的双倍好。当图标等于一的时候,我们换成普通造型, 然后呢把它移到这个位置啊,目前这个位置就挺好。 然后呢第二个稍微往下移一下啊,然后我们复制一下, 好再来一个如果他等于二的话,换成双倍,然后歪坐标呢?呃,往下挪一个五十,先试一下换成 啊五十九。可以呀,来我们运行测验一下,点击。哎,他们两个位置是不是还是一模一样的呀?看一看,这是为什么 哦,是因为我们这地方显示的是本体,这个克隆体是不是还是隐藏的呀?所以我们给他加一个显示, 加一个首饰, 发现这个地方已经有显示了,所以应该不是这个问题。哦,那是这个地方他固定把他们移到一个同样的位置,把这个代码去掉,统一都由这个克隆体来起作用。 好,两个已经分开了,对不对?这个位置也刚好,但是大家仔细看能不能看见这个后面其实还有一个这个本体在显示的呀,我看这样才能够是正常现象啊,这是为什 什么呢?是因为我们这里有一个当接收到打开商店的时候呢,让他显示出来,后面有一堆购买,有一堆这个碰到的逻辑。 这个这个接收到消息呢?其实不光是克隆体能接收到,我们的本体也是能够接收到这个消息的,所以在这里我们要特殊处理一下,让这个大码呢只对克隆体生效,对本体不生效。这个地方呢就需要涉及到一个技巧了,我们来试验一下, 我们新建一个变量,直接起名叫是否是本体,请适用于当前角色是否是本体?好,一开始的时候呢?把是否是本体设定成 no, 那这样在克隆过程中,这两个新的克隆体是不是就是啊? no 啊?他们的这个变量就是 no, 那对于我们的最后一步,我们把这个变量呢恢复成 yes, 那这样的话,我们的本体角色他的这个电量呢?就是 yes 了。然后呢,在这个接收到消息的时候呢,我们加一个条件,只有当这个电量是 no 的时候,也就是说他不是本体的时候,我们才做这件事情,事情 来一个等于是否是等级等于 no, 哎,验证一下,我们看到已经不见了那个底色了,对不对?好,这样的话我们就能够把两个炮台都显示在商店里面了, 来我们测试一下他的攻击功能管不管用?第一个好,正常购买,然后呢放在这里之后,他是可以正常攻击的,没有问题,我们再来买一下。第二个 好,要一放,我们发现买第二个虽然他能攻击,但是这个造型是不是并没有显示成我们新型的炮,新型炮台的造型啊?这个问题呢,我们来看一看,为什么啊?这个炮台呢?我们还没有改这个地方呢,他是不是一直是啊第一个造型啊?所以这个地方我们要修改一下,让这个 购买了的炮台这个克隆出来之后呢,能够显示,这样显示成我真的购买的那个造型啊。这个地方呢,我们需要先在啊炮台图标这里标志一下,你刚才点击了哪一个炮台图标,也就是说你购买了哪一个啊?这个问题呢稍微复杂一点,我们呢要通过几个边上来做, 首先我们建立一个变量叫适用于所有角色,通过这个角色呢来告诉我们的真正发自攻击的那个炮台角色,当前我选择了哪一个炮台?我给他起名叫当前 买的炮台。好,那这个炮台这个这个变量应该设定成什么呢?当我点了哪一个, 当我点了哪一个,是不是就应该把它设定成这个炮台的角色,这个炮台的类型啊?普通或者双倍。而这个信息呢,在这个地方 也不太好确定,我们需要通过一个列表来完成这件事情,这个列表呢我们给他起名叫炮台类型, 我们把他们两个的东西呢都存起来,好后排类型。当然了一定要记得初始化,一开始的时候,我们把 炮台类型里面的内容全部删除,然后在克隆的过程中把它加进去,如果他是普通炮台 的话,我就把普通两个字加进去,然后如果他是双倍的话,我就把双倍两个字加进去, 这样的话我就知道我的这些炮炮台都有哪几个了。然后当我这个地方鼠标碰到的时候,我就可以从这个列表里面把他的这个啊类型给找出来。那怎么找呢?这个地方我们是不是知道他炮台描述的编号是什么呀?然后根据这个编号,我从这个列表里面把它找出来,他就要用到 什么什么的第几项号台类型的第几项?第几项呢?第号台描述编号项, 再拖一个炮台描述编号,炮台图标编号,因为每一个克隆体都有一个自己的编号,那他的编号对应的类型是什么?我们就能够找出来了。然后把它设定成当前买的这个炮台, 这个边量呢,因为是全局可以建,我们就可以让炮台知道了。我们先验证一下当前买的炮台,是啊,零 进来,哎,是不是现在是普通啊?好,我们再来一个,当前买双倍,还有变成了双倍,对不对?现在我们只需要把这个信息告诉炮台就可以了。我们到炮台这个角色里面来看一看应该怎么修改 好。首先这个地方并没有切换,并没有切换这个造型的功能,所以我们要来一个换成什么什么造型,换成什么什么造型好,把它稍微断开一点点, 在显示之后,那这个地方呢?我们把他的名字呢稍微改一改,跟刚才这个地方保持一致。第一个我们给他起名叫普通,然后下面这个起名叫 双倍。 回到这个地方,每一个克隆起呢都需要有一个自己的炮台类型,所以我们需要建立一个变量,他的名字呢叫炮台类型,一定注意是金丝,用于当前角色。 好,然后呢我们把这个类型,把这个炮台类型这个变量设定成, 设定成什么呢?刚才这个地方的那个全局的变量,当前我购买的炮台是谁设定成他,然后呢把他把类,把我们的造型呢就换成这个变量,这个变量如果是普通我就换成普通,若是双倍我就换成双倍。 好,试验一下, 普通没问题再来。哎, 这样是不是没有问题啊?来,我们把这个电量的隐藏一下,我们来抽烟一下, 测验一下攻击功能是否是本体,这个也去掉, 买一个双倍来攻击好。我们发现虽然拖出来的时候,那一瞬间他是显示了新式炮台的, 但是一旦攻击是不是又恢复成普通炮台了呀?这个地方呢,我们需要改一下, 在炮台这个地方,我们看攻击的地方是在这个地方,如果能够攻击的话,他有这么一段代码,你看这里切换的都是普通的这个炮台的造型,这个地方我们优化一下,因为代码量会比较多,所以呢我们给他 啊建立一个新的,建立一个新的啊积木来做这件事情,这个积木呢我们就给他起名字叫射击动画, 好在这个动画里面呢,我们来区分一下他到底是什么类型的炮台好,如果他是普通炮台的话,我就跟之前的攻击方法一样,炮台类型 是普通,我们把这个拖出来两个,上面这三个模块是切换他工地造型的,下面这个是我们是不是每一次发泡之前的等待过程啊?所以这个地方我们回到主斑马里面,只把切换 工地造型的发挥到这个地方。然后如果他的炮台类型是双倍的话,双倍 双倍,那我们应该怎么换呢?是不是先换成 第一个工艺造型四啊,再换成五啊?我们通过这个来做一下,首先换成四,等待一会换成双倍。好,然后呢把它复制一下,是不是再等待零点零五秒, 再等待练练换成五,然后呢再换回双倍,这样的话才能实现双枪攻击的效果。测试一下 哦,这个地方没有切换,看看为什么 哦?是因为这个设计动画呢?我们忘了把它使用一下, 定义了一下,并没有使用 好,能看到两个炮筒已经有这个射击的动画了,对不对?但是,但是,其实你仔细看,你会发现我们其实仅仅攻击的仪式 一次,对不对啊?双炮台他就应该攻击两次,这个地方呢,我们再来给他优化一下, 当他第一次攻击之后,第一次攻击之后,这个地方仅仅是换了一下造型,并没有真的攻击,所以这个地方呢,我们要再来一次, 再次瞄准他并攻击。如果,哎,跟这个一样啊,那这时候我们就不说出编号了,如果我发现他确实能够攻击的话,跟之前一样,再把他的血量减一减。然后呢换一下造型,把这个功能放在瞄准之后, 再试验一下, 哎,是不是一下子两下就把第一个打打中了? 好的,那这样的话我们基本的两个类型的炮台就都可以攻击了。现在呢,还有一个小小的问题是,我们 且鼠标挪到这个上面显示普通,但挪到这个上面是不是并没有显示他的描述啊?并且呢,我们希望他们两个的价格是有所不同的。接下来我们来完成这个功能, 首先我们在炮台描述里面新建一个造型,用它来表示第二个炮台的描述,我们把文字改一下, 阿格呢,我给他设定成一百。那这个地方其实跟刚才我们通过这个当前的这个买的炮台 去通知这个真正攻击的炮台这个角色一样,我们这个描述呢,是不是也需要一个感觉的变量来通知他呀,那这个地方呢,跟这个炮台类型一样,我们新建一个列表,他就叫炮台描述, 然后呢我们把炮台描述的这些文字呢给他写入进去,一开始的时候记得把它全部清空。炮台描述同样价格也是一样啊,那我们就一起做了炮台描述和炮台价格, 把他们原来里面默认的每一次开始都把里面的内容删掉,好看,价格, 炮台描述跟这个类型一样,然后在每一次克隆的时候呢,我们往里面填上正确的值,炮台价格第一个是五十, 第二个是立白。好,然后这个炮台描述呢,他不需要呃,每一个克隆出来就不一样,因为他们一开始肯定都是隐藏的,所以我把它放在这个地方,一开始的时候将隐藏放入炮台描述 好,那什么时候他应该显示呢?是不是当我鼠标选中他的时候,他就应该显示出来,所以我们往这里加一个,如果碰到鼠标指针了,我把炮台描述的对应的这一项呢替换成显示,这样炮台描述 好,炮台描述的第几项换成显示呢?那是不是我们图写呃,炮台图标编号啊,对应的编号给他换成显示,如果没有选中的话,他就应该是隐藏,我们把这个代码复制一下, 把它放在最后。好,那这个炮台描述的编号呢?我们就呃用不着了, 我们可以把这个抛开描述编号的来删除。好,不要了,直接用我们新型的这个列表就可以完成这个功能,我们来点击利息。一开始两个都是隐藏价格呢,分别不一样,鼠标挪上来变成显示,哎,怎么两个都显示了?我们来再来一遍测验一下,一开始隐藏 太快了。好,我们检查一下,为什么哦?这个鼠标没有选中的时候,应该是隐藏这个地方,复制之后忘了香港 一看是隐藏里边挪上来第一个显示,挪到第二个,第二个变成了显示,对不对?那这样的话,我们在这个角色里面就可以利用这个列表的列表的信息来控制下面显示什么内容。 那这个地方呢?依然是我们把这个炮台描述编号呢?先去掉。好,不用了,这个地方,我们通过这个描述的这个列表来完成这个功能。当打开商店之后,我来判断一下,看一看哪一个编号,他的是显示哪一个编号是隐藏,所以我们需要用一个 什么的第一个的编号,炮台描述的第一个显示,这什么意思呢?就是我们假设我们把第二个设定成显示,他能够帮我们找到 内容是显示的这个列标的编号,你不告诉我们二维码。好,我们把它放进去。 好,如果他的这个编号是零的话,我们就直接让他隐藏,如果他是一的话或者二 二的话,我们就显示成对应的编号,那这个编号呢?把它复制一下,编号是几,我就显示成几造型,如果我之后找出来是二,我就换成二造型,如果是一的话,换成一造型,那这就要求我们在这个地方把它改成一二。 好,这个东西呢要重复执行来验证一下来,第一个普通下面已经显示出来了,好,双倍下面也显示出来了,没有问题, 这样的话我们这个描述的功能就做完了,那现在我们试验一下,当我点击他的时候,有没有扣一百块钱呢?看这里金币是一百,点击是不是还剩五十啊?这个购买的逻辑扣钱还不太对,我们能看到这里扣的是固定的五十块钱,这个地方呢,我们要 修改一下,你不能每次都扣五十,要根据我这个炮台的价格不一样来扣不同的东西啊。这个信息我们已经有了,是不是可以跟刚才一样 类似的,我把炮台价格的炮台图标编号项,你是你的这个克隆起的编号是几,我就把你的价格找出来呀,如果是第一项的话,价格就是五十,这个地方应该大于四十九,如果是一百就应该大于九十九,对不对?在这里我们用一个简单的数学来一个减法, 我找到这个价格之后,减去一放进去,如果金币大于他的话才能够购买,购买的时候是不是先把它剪掉吧,所以这里还需要一个数据,工资直接改成零减去这个值。好,我试验一下把这两个呢,先品尝一下, 我们先买第一个,扣了五十块钱没有问题,再买第二个,点击发现买不了了,因为你的钱不够,再测试一下,直接买第二个,好,没问题,金币变成了零, 能不能正常攻击呢?撞撞撞,撞两次也没有问题,当然这个地方显示这个编号,如果你不想要的话,在这个地方直接把它说话的这个去掉就可以了,因为我有时候还要测试啊,所以我就把它留在这个地方了。 好,这就是我们今天的内容了,我们总结一下,首先呢我们给这个炮台柜子的一个新的造型,让他能够啊有多个炮台可以买,然后图标也对应的修改了一下,然后这个图标的切换逻辑呢,我们通过一个 这个编号,不同的话显示成放大一点,显示成不同的造型。然后这个类型和价格呢是为了通知我们的这个炮台,还有这个 上面还有一个描述的这个列表,通知其他的角色,我现在到到底是购买了哪一种类型的炮台,然后在这个炮台的设计里面呢,我们新建了一个积木,新建 一个积木替换他原来的动画。那这个新建的积木里面呢,根据炮台类型的不同做了不同的攻击的动画,尤其是双倍这个地方,我们让他攻击了两次。然后最后呢对于这个描述我们做了一个优化,当买不同的炮台的时候,他可以显示不同炮台对应的描述,价格上也是一样, 在你购买不同炮台的时候扣的钱是不一样的。好了,这就是我们今天的全部内容了,有问题的话评论区里面给我留言,拜拜。

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

这是我们教程的第四集,首先呢,恭喜大家顺利的完成了我们教程中最难的第三集。 呃,从这一集开始呢,我们会给我们的游戏增加一些动画以及有趣的玩法,虽然难度呢不如第三集那么难,但是呢,这些优化会让我们的作品更加的有趣, 同学们也更容易发挥出自己的想象力。那在这集中呢,我们主要是两个优化,第一个是增加了炮台攻击敌人以及敌人被攻击的这么一个爆炸的效果。 另外一个优化呢,是我们的炮台放置的时候增加了一些限制,不能够放在逃跑的路上,也不能让炮台重叠放置。好的话不多说,我们开始编程,我们首先来 做敌人被攻击的这么一个动画,在造型里面呢,我们要给他添加一个造型,这个造型呢是一个爆炸的效果,如果炮台攻击到这个敌人的话,他就要爆炸一下,然后再把自己删除掉,那我们用 这个工具来画,当然呢跟之前一样涉及到绘制的部分呢,大家发挥自己的创意来进行就可以。老师这里呢只是一个示范, 好到这里呢,我们这个爆炸的效果呢就绘制完成了, 那这个造型什么时候使用呢?一定是当我们的炮台攻击到这个敌人之后,那我们呢,在敌人的这一 代码里面给他加一个删除克隆体之前,先让他换成这个造型, 换成造型四,然后呢稍微等一会再把自己删除掉,我们选择一个等待模块,然后来一个零点,一来实验一下, 好能看到攻击到这个敌人之后呢,他就变成了一个爆炸的造型,我们第一部分呢就完成了,然后第二个优化呢是我们的炮台攻击的时候也有一个 这么一个类似的动画,那我们对应的呢也是需要绘制一下炮台的新的造型,我们复制一下,在这个上面呢,绘制一个开炮的这么 一个效果,那这一部分依然是大家发挥自己的想象力,老师这里只是一个参考。 好到这里我们这个射击的造型呢就恢复好了,用了一个浅黄色的作为炮火,然后棕色的作为这个边缘,模拟出来这么一个效果,我们把它放到后面。 好,那这个造型什么时候出现呢?他是在我们放下了这个炮台,他监测到目标敌人进行攻击的时候,那就是在我们的这一部分放大一点, 这一部分说出来敌人的编号,然后是否是否工具等于 yes, 在这个地方再把他 设定成掉了之前,我们展开一个这个攻击的效果,我们来一个将造型切换为二,然后呢稍微等一小会,比如说零点一,再换成造型一, 好来试验一下, 好,能看到我们攻击的这个效果已经出现了,好,非常好。 接下来呢我们来做第二个增强,是我们的炮台放置的时候呢,增加一些限制,他首先呢是不能够放在这个路径上面的,那我们很自然的想到应该用一个判断条件在这个地方, 对吧?跟随鼠标移动,然后当我想放置他的时候呢,我可以加一个判断, 如果碰到我们的路径的话,他就是不能放置的。 好,那这个现在还没有录进这个角色,我们首先要把这个角色呢给他从背景里面提取出来, 那我们先创建一个空白的角色,给他起名叫路径,已经有路线了吗? 区分一下这个叫路径。然后呢我们到背景里面用选择工具把它剪切出来,这次不复制了,直接剪切走, 剪切到我们的路径里面好,同样的位置不动,但是这个路径呢,我们要给他加一个 当时被点击移到正中心的位置,零和零零零好,这样就可以了。 然后呢这个炮台呢,如果碰见了这个路径,他是不能够放置的,我们通过一个变量来表示他能不能放,然后在这个地方呢做一个限制,只有能放的情况下,按下鼠标才能够把这个呃克隆体放在这个地方。 创建一个变量仅适用于当前角色,我们起 因为好几个克隆体吗?所以仅是因为当前角色,每个角色可以单独控制能否放炮台。 好的,然后如果碰见路径的话,这个变量呢,就应该设定成 no, 能否设定成 no。 然后其他情况是夜市,那我们换一个换成如果,那么否则, 如果碰到路径将能否放炮台显示成设定成 no, 否则把它设定成 yes 好。然后那怎么标,怎么提醒他这个地方不能放呢?我们给炮台里面再绘制一个角色,用来提醒明显一点的 老师的方法呢,是直接把它涂成红色,这样的话,呃就代表着这是一个警报的概念,把他的填充和轮廓 通通改成红色,通通改成红色,用来警报这个地方不能放 好。然后呢回到代码里面,如果他不能放的话,我们就把他的造型切换成造型三,如果他能放的话,我们就把他的造型切换成造型一。 好,然后呢,那这个变量能否放爆胎在什么地方起作用呢?在这个地方啊,因为这个地方按下鼠标之后呢,我们就会让这个好克隆体停留在这个地方了,他就不再跟随, 不要进行移动了啊。这个外面呢,我们加一个判断,只有当我们的能否放炮台,这个变量等于 no 时候,等于 yes 的时候,他才是可以放置的。好,我们来测验一下,把这个变量隐藏掉, 好拖动他。好,当我们碰见这个路径的时候呢,他是改成了红色来提醒我们,然后这个地方呢,他是可以正常放置的。好,我们现在发现一个小问题啊,一个是这个路把我们的炮台挡住了,另外一个是有没有观察到这次我们的敌人并没有出现, 对不对?但其实如果你仔细观察的话,你会发现这个敌人还是有的,因为我们的炮台还能够攻击这个敌人,这个敌人到最后呢还能从这里出去,有一个爆炸的效果。那这个原因呢,是因为我们把路径呢单独做成了一个 角色,他把我们的炮台和敌人都给覆盖住了,我们加一个这个移到最后面,在层次关系方面呢,把它放在最后面,这样应该就没问题了。好,这样我们的敌人显示出来了,炮台提醒放在这个地方可以攻击。 好的,没问题,这样的话,我们我们关于炮台放置的限制呢,就做完了一部分了,还剩下一个限制是说如果我们放了一个炮台在这个位置, 那么我们不能够再在他身上再放置一个炮台,这样显然是不合理的,我们要把这个线子呢再做一下,那这个 最初的想法呢,肯定是最容易想出来,我在这里加一个,如果碰到路径或者碰 碰见炮台是不是就可以了?那能够想到这个地方呢,是很核心合理的,但是呢这个方法是不行的,你看这个地方你是不能选择炮台的,因为你自己不能选择,如果碰见自己不能放炮台,对吧?所以这个地方呢,我们需要引入一个 专门用来侦测有没有碰见炮台的这么一个角色,辅助我们来做这个限制,那我们新建一个 角色,给他起名叫碰撞碰撞检测吧。 好,然后呢我们给他绘制一个红色的报警的,没问题, 大小呢可以跟我们这个差不多大,稍微小一点吧, 放在中心位置。好,我们把后台呢也可以做一个对比, 好,他是百分之六十这么大,如果把它分成百分,因为我们拖动的时候是百分之百吗?所以我们看看他的大小合不合适?好,差不多这个大小 再稍微大一点,这个呢就需要大家根据自己的角色大小灵活去调整了,好这个位置就可以,那这个角色有对应什么样的功能呢 啊?首先呢他应该跟这个炮台一样,是有多个克隆体的,我们炮台有几个他就应该有几个,所以 当我的鼠标放下一个,这个拖动一个炮台的时候呢,这个碰撞检测呢,应该也是要一起克隆出来的, 一起克隆出来一个碰撞检测,然后这个东西呢,他应该跟炮台一样,是可以跟随我们的鼠标进行移动的,所以我们可以来一个,一开始让他显示出来,当克隆体出现的时候, 他呢应该重复着跟着我们的主要进行移动,跟这个炮台这里的功能呢是类似的,他应该有一个鼠标操作的这么一个概念, 首先建了这个变量,仅适用于当前角色鼠标操作,这个 电量呢,是为了区分我们是选中了这个角色,还是松开了鼠标放在这个地方。这两种情况一开始的时候 跟炮台一样,把这个鼠标操作设定成选中,因为这时候已经啊选中炮台了,正在拖动重复执行啊,如果他等于如果 鼠标操作等于选中的话, 选中火柴,让他一直跟随鼠标进行移动 一道鼠标指针,那什么情况下他应该松开呢?对于炮台来说,是不是当我再按下鼠标的时候, 把它放在这个地方的时候,他就应该停下来了。但是呢,这个鼠标操作呢仅次用于炮台,他跟我们碰撞检测呢,这个鼠标操作不是同一个,所以我需要呢用另外一种方式去通知他,这时候你可以放下去了,我们来一个广播消息, 给他广播一下啊,这个消息呢就起名称放置炮台。 然后当我的碰撞检测接收到这个消息的时候呢,我就把这个鼠标操作 设定成空,这时候他就不再跟随鼠标进行移动了,我们实验一下, 好跟随鼠标进行移动,然后当我放置在这里的时候,哎,他也停在这里了啊,一个小小的细节,首先这个本体呢,我就把它给隐藏起 来了,整体给隐藏起来,然后这个位置呢可以稍微的往右边移一移,好 好,这个位置差不多。好,我们再试验一遍,当我点击滤芯的时候,本体隐藏了,然后拖动的时候呢?哎,他会跟随我们的 目标炮台一起去移动,那这个地方呢,我们其实是应该把这个碰撞检测呢给他隐藏起来的,对不对?然后放在这里的时候再让他显示出来,所以这个地方呢,我们改成这个样子, 让他隐藏起来,好,拖动是看不见的,然后 镜不能放,放在这的时候,哎,这个地方显示出来了,然后为什么让他显示在这里呢?就是因为我们这个地方呢要做一个侦测,在我放置的时候呢,这个炮台呢,他不能碰见这个东西, 不能碰见。我刚才放置在这个地方的这个炮台这个红色的,当你再拖一个新的的时候,他不应该能碰见他,对不对?你看,哎,碰见他就变红了,碰见他就变红了,代表不能放置啊,这样的话,其实我们这个功能已经做完了,但是呢这个碰撞检测显示在这个地方 看着是不太合适的,那如果我们直接把它隐藏掉呢?也不行,你把它隐藏掉的话,我们炮台这个地方的侦测呢, 真车有没有碰见他就不管用了。那我们有另外一种方法,我还是把这个碰撞检测的角色呢显示着,但是 呢我把它的特效虚像特效设炼成百分之一百就完全透明,虽然他在这里,但是他是完全透明的。 好,我们再验证一下,拖动好可以攻击。再来一个路径,没法放,往上面放的时候,哎,也会提醒你对不对?只有往其他地方才能放,不能放,哎,其他地方是可以放置的,其他地方是可以放置的。 好,放这里。刚才这个地方不能放着是因为我们的本体在这里,我们把它呃移到一个角落里面,以免它影响我们 这里吧,肯定不会往这个地方放炮台对不对?好,再测试一下。好,可以放,不能放,没问题。再来 来一个不能放,不能放,其他地方可以放置好的,没问题。那这个呢,就是我们第四集的主要内容了,我们给他增加了这个 炮台射击的特效,增加了击中敌人的时候的这个特效,以及在你脱放的时候呢,增加两个线子,不能放到这个路径上面,也不能做重叠。好, 那我们今天的内容就到这里了,如果你喜欢啊,侯老师的视频教程,一定记得给老师点赞,最好呢可以把它推荐给你的好朋友,我们一起来编程,一起来完成这个有趣的游戏,我们下次再见。


哈喽,大家好,我是杰瑞老师,今天我们开始学习塔防游戏的第三课,前面两节课呢,我们已经把 这个固定的马路啊,就是这个敌人要经过的导航线以及敌人已经画好了,包括他的功能也已经做好了,那么这节课呢,我们要学习 制作这个炮台,首先的话呢,我们先创建一个角色绘制啊,先画一个正方形 啊,把它的颜色调成灰色啊,然后再画一个炮台的那个嘴啊,就是那个枪糖啊,炮糖。然后呢我们画好之后呢,我们去调整一下他的这个位置啊,包括他的大小, 然后居中 啊,简单的做一个调整就可以了, 然后我们把它移到右上角这个位置。 好,我们现在开始来进行操作啊,先小绿漆被点击,那么这个功能是什么样的呢?就是说这个炮台啊,他被点击之后啊,鼠标点了,那么就可以放到我们想要放的位置上去, 对吧?然后我们呢先将它的大小啊,先初始化的这个位置啊,先给它设小一点,因为它是一个啊,道具栏嘛,对吧?我们就把这个右上角设为这个炮台的道具栏啊,我们可以去说鼠标点击它之后呢,就可以在我们想要的位置上面进行 放置好,然后呢我们再给他将他的造型啊改确定为造型一啊,因为我们后期呢还会去给他添加一些其他的造型啊。好,然后呢我们去新建几个变量,第一个变量呢就是 操作鼠标,用来判断鼠标有没有点击这个炮台的,然后呢我们再新建一个变量啊,叫 显示炮台的一个攻击的范围啊,他的半径,到时候呢,就是说我们在点击他的时候,这个炮台有一个攻击范围,我们就可以选择比较合适的位置去放置这个炮台啊,还有一个呢就是查看攻击范围,就是, 嗯,一开始啊,就是我们到后期设置的时候啊,这个炮台啊,并不会不会有那么大的一个攻击范围,我们可以对炮台啊进行升级的。好,我们先将他的位置啊也进行一个初始化啊,把他的这个坐标值给他固定住 好。然后呢包括将变量操作鼠标这个变量,以及还有这个 攻击范围这个变量我们都要做一个初始值啊,操作鼠标这个变量呢,我们设置为一个空值啊,是这空的,然后呢这个显示可攻击的范围,我们设置为 no 啊,好,因为就是这个时候,因为我们还没有点击他嘛,对吧?那肯定都是还没有发生这个纸的变化,然后呢?哎,我们来看一下从 重复执行什么,就是我们点击他的时候,他的本体应该是没有发生变化的,是什么呢?是什么情况下呢?就是我点了他之后是怎么点鼠标要先碰到他,然后并且要按下鼠标键,就是这个,我们右上角这个炮台,对吧?是 首先鼠标要碰到它,并且要按下鼠标的时候,这两个条件同时达成的情况下才会触发,对吧?然后我们这个时候将操作鼠标这个变量呢,我们先给它改为 yes, 这个时候因为鼠标已经操作它了吗?对不对?好, 但是,哎,我们说了,就是我们并不是去控制他的本体的,我们是去控制他什么?我们是去控制他的克隆体,因为我们并不是只创建一个炮, 我们要创建多个炮台的,对不对?所以我们在这个时候是克隆自己,克隆完之后呢,我们要控制的就是克隆体了吧?那克隆体启动之后呢?哎,我们重复执行一定要有啊,因为我们要去控制克隆体吗?对不对?好,来判断一下。判断什么呢?判断有没有按一下鼠标? 什么意思?因为我点击完他之后克隆体,因为在前面啊,旁边的一个积木块的时候,我们是不是已经给他啊?设置好了一个变量,就是鼠标按一下的时候,以及鼠标碰到这个炮台本体的这个图标的时候,道具栏的时候, 我们是不是已经将它的变量名称啊?从 no 已经设为了 yes, 那我们这个时候只需要判断操作鼠标这个变量它是不是等 yes, 如果是等于 yes, 那就说明我碰到了鼠标,并且按下了鼠标,也就是说我们这个时候已经有克隆了,对不对?然后这个时候的克隆体他就要干嘛?他就要跟随鼠标,我们这个时候就是去选择一个位置可以去放下他。好, 这个功能呢,我们就已经实现了,发现是没有什么问题的啊,但我们可以把这个大小应该来做个调整啊,就是, 嗯,一开这边比较小,我们当我们要放置炮台的时候呢,我们可以把它稍微调大一点点啊,从这个美观性来上来说的话呢,会比较好一些。 好,那我们现在只是可以克隆这个,但是还不能放下对不对?还不能放下。好,我们现在怎么做呢?我们在这个里面 将这个显示可攻击范围改为 yes 啊,我们先改为 yes, 因为我们这个时候还没有创造这个可攻击范围,我们还要把这个可攻击范围一会我们要给他画出来的。 好,我们还是要再把这个克隆体启动,再新建一个出来,因为这个时候我们这个炮台啊,他是一直在跟随着鼠标的,并没有说我们点击放置的位置之后,这个克隆体就会在这个位置当前这个位置就会停下来,他并没有,所以我们要去 让我们选择了这个炮台之后,这个炮台跟随着鼠标移动,然后我们选择一个可攻击的范围的一个位置的时候,他就可以放下来。那我们现在我们怎么去操作呢?我们来看一下,就是重复执行,如果鼠标哎,按一下鼠标,如果按一下的鼠标对不对? 那么这个时候我们来判断按一下鼠标是不是是不成立的,如果是不成立的,我们就把它改为 no, 改为一个空值,然后再将可攻击范围改为 no, 什么意思?就是比如说我已经选择了这个,他已经跟随着我鼠标在移动了,对不对? 这个时候当我选择一个位置的时候,我再点一下并且放下他的时候,这个时候是不是就不存在摁一下鼠标这个功能了呀?这个操作这个是不就没有了呀?没有了的话,那这个时候就克隆体就不再跟随鼠标指针了,他就会 在我们选择的那个位置就停下来,就出现在我们想要的那个位置上了,然后我们现在来画一下这个可攻击的一个范围啊,同样的是去画一个圆,然后呢将这个圆呢啊设为白色的啊,为什么?因为我们一会呢可以 给他设置一个虚像啊,设置成虚像,这样的话呢,当我们点点击他的时候呢,是可以看到他的攻击范围,并且呢是半透明的状态,还可以看到后面的一个背景,就可以选择 啊,我们想要的一个位置啊,是可以比较方便我们去操作的啊,我们将虚相特效啊,先设定为五十啊,然后呢我们去重复执行一下, 好来判断。判断什么判断?我们刚刚在前面的时候是不是已经给他设置了一个东西,就是判断他的显示可攻击范围是不是等于 yes, 如果是等于 yes 的时候呢,我们就显示一下 啊,然后呢让这个呢移到鼠标指针,因为我们在选择炮台的时候,炮台是不是也移到鼠标指针了,那么我们 把这个攻击范围也移到鼠标指针,这样的话呢,他就可以感觉是这个炮台的可攻击范围了。好,然后这一块呢我们就做好了。 好,我们来演示看一下效果啊,你看点击的时候是不是有一个半透明的呀?是不是啊?好有一个半透明的,那我们现在呢就需要来调整一下这个 好,我们现在发现啊,就是并不能克隆多个这个克隆体啊,发现有一些小问题,那现在怎么去操作呢?我们再重新进一个变量,叫鼠标操作的变量啊,这里有一个记住就是仅限 当前角色可以去使用啊,防止产生的一个冲突啊,我们现在把这个更改一下,改成鼠标操作 啊,改成鼠标操作,然后呢?把这些操作鼠标全部改成鼠标操作,然后等一会把那个鼠标操作啊给他删掉去啊,操作鼠标前面键的那个变量给他删掉去,然后我们再来测试一下,看一下效果。 a, 还是有一些问题,我们来找一找问题在哪里? 好,我们把这个位置也做个调整,把这个如果,那么呢改成如果,那么,否则啊,如果说是另外一种情况出现的话呢,就不执行一个东。好,我们再在克隆的位置呢,给他增加一个等待,等待什么呢?等待, 因为你是点一下,点完之后你每点一次是克隆一次的,所以呢,我点完之后,对吧?我们改为 yes, 然后呢这个时候我们是不是只是一直在摁,在碰到鼠标,然后 点一下之后就不再点击鼠标了,对不对?只要点一下就可以了,那么这个时候怎么办?就要改为判断不成立的时候,如果不成立,我们这个时候就克隆,也就是说每点一下是克隆一次的,这样的话呢就不会出现功能上的一个冲突了。 好,那我们来看一下整体的一个效果啊,是可以实现我们想要的一个结果的。 好,那,那今天呢,也是国庆节的第三天,祝大家国庆快乐。
