怎么样泰沙拉克怎么才能得到boss

BOSS制作教程_图文攻略_全通关攻略_高分攻略_百度攻略
1L:本帖将从最基本的方面说起,教你制作一个不错的BOSS。由于BOSS的所有动作均使用代码完成,警告:代码过敏者请勿阅读此贴!新手学习过程中,最好跟着教程一步一步的操作一下,试着写一写,看看每一步之后会得到什么效果,如果仅仅是看代码是不可能学会的。(这也是我用图片方式来写教程的原因) 如果对代码等问题有任何疑问,可以在楼中楼提问。精彩内容,尽在百度攻略:https://gl.baidu.com本帖包含基本篇与进阶篇,请挑自己喜欢的口味观看。目录2L:本帖中用到的GM变量函数关键字汇总精彩内容,尽在百度攻略:https://gl.baidu.com3L:对脚本Script的初步介绍——基本篇——4L:基本的BOSS制作精彩内容,尽在百度攻略:https://gl.baidu.com5L:制作攻击方式16L:制作攻击方式27L:制作攻击方式3精彩内容,尽在百度攻略:https://gl.baidu.com8L:各个攻击方式的组合运用、BOSS其他事件9L:给BOSS制作一个血条——进阶篇——精彩内容,尽在百度攻略:https://gl.baidu.com10L:简单的多状态BOSS11L:复杂一点的多状态BOSS,制作攻击方式412L:一些常用的BOSS战画面效果精彩内容,尽在百度攻略:https://gl.baidu.com 2L:在本帖你可能遇到的GM内置变量、函数与关键字:精彩内容,尽在百度攻略:https://gl.baidu.com最常用,也是最关键的几个:speed 表示obj的速度direction 表示obj的方向精彩内容,尽在百度攻略:https://gl.baidu.comx 表示obj的x坐标y 表示obj的y坐标instance_create(x,y,obj) 在(x,y)位置创建obj,返回obj的id(可以理解为这个obj的代号)。精彩内容,尽在百度攻略:https://gl.baidu.cominstance_destroy() 摧毁当前obj,如果需要摧毁其他的obj,则需用到:with(obj) instance_destroy()。(instance_destroy(obj)是行不通的哦) 其他:精彩内容,尽在百度攻略:https://gl.baidu.comsound_stop_all() 停止所有声音sound_loop(snd) 循环播放snd音乐sin(x) 返回x的正弦值,x以弧度表示精彩内容,尽在百度攻略:https://gl.baidu.comother 表示正在与当前obj碰撞到的objirandom(x) 返回0与x之间的任一整数,如果x为整数的话x也有可能被返回。也就是说irandom(3)一共可以得到4个值:0,1,2,3。repeat(n){STATEMENT;} 重复执行大括号之间的代码n次精彩内容,尽在百度攻略:https://gl.baidu.commove_towards_point(x,y,sp) 以sp的速度向(x,y)的方向移动。注意这个命令不是移动到(x,y)这个点就会停下来,(x,y)仅仅用来确定坐标。image_speed 图像循环播放的速率image_index 当前spr播放到了第几帧精彩内容,尽在百度攻略:https://gl.baidu.com 教程GMK下载地址:(地址)解压密码:制作BOSS的前三个攻击方式,各需要多少个obj(不包含BOSS)?(如果分精彩内容,尽在百度攻略:https://gl.baidu.com别需要1、2、3个obj,则密码为123) 3L:精彩内容,尽在百度攻略:https://gl.baidu.com脚本Script脚本的作用方式跟函数大体相同,给它一些参数,它便会帮你做一些事。脚本中最多可以有16个参数,它们被命名为argument0~argument15。下例是一个简单的脚本:精彩内容,尽在百度攻略:https://gl.baidu.com 可见这个函数由三个参数构成,返回值为三个参数的平均数,在你编辑obj的过程中,你可以使用:c = scr_average_3(1,2,3),或者c=scr_average(x,xx,10)那么c = (x+xx+10)/3。 由于求平均数的算法比较简单,你也可以简化写为这样:精彩内容,尽在百度攻略:https://gl.baidu.com 此后如果你想求三个数的平均数,只需要调用这个脚本就行了。用一个比较⑨的例子说明了一下脚本的工作原理之后,我们就要提到本帖要说的第一个脚本了(在Script文件夹上右键,选择Create Script…):精彩内容,尽在百度攻略:https://gl.baidu.com 这是一个播放音效专用的脚本,先将想要播放的音效停止,再播放该音效,这样做的做最大目的是解决win8不兼容的问题,否则当你播放某些音效的时候,用win8系统的童鞋玩的时候就会崩溃咯。。。所以在制作boss时播放音效时,我们全部使用这个脚本来播放,省去精彩内容,尽在百度攻略:https://gl.baidu.com每次都要写两个函数来播放一个音效的麻烦。 再来看另一个制作boss时用得非常多的脚本:精彩内容,尽在百度攻略:https://gl.baidu.comsplitobject 精彩内容,尽在百度攻略:https://gl.baidu.com这个脚本由argument0~argument4这5个参数构成,作用为同时发射分裂的弹幕,也就是在obj四周以相同的角度间隔发射弹幕。注意这里a=instance_create(x,y,argument2) ; a.speed=argument1的创建obj的方式,在创建的同时可以给obj的各种变量赋值,用途十分广泛。argument0:决定发射弹幕的数量argument1:决定发射弹幕的速度精彩内容,尽在百度攻略:https://gl.baidu.comargument2:决定发射的弹幕是哪个objargument3:决定发射弹幕的方向,1为自机狙,-1为随机弹。argument4:决定在发射弹幕之后该obj是否要摧毁自身,1为摧毁自身精彩内容,尽在百度攻略:https://gl.baidu.com例如splitobject(8,6,deliciousFruit,1,1),则会以6的速度发射8个苹果,其中有一个必定朝向kid的所在位置,在发射了这8个苹果之后,当前obj会摧毁自身,也就达到了“分裂“产生8个苹果的效果。 4L:精彩内容,尽在百度攻略:https://gl.baidu.com(基本的BOSS制作→创建、移动、碰撞子弹)在制作BOSS之前,首先要想好你想做的boss外形如何,也就是你想使用什么spr,最好使用贴近你的游戏氛围的spr。这里以仅举一个简单的梨子(普通砖块):复制一个普通block的spr,取名叫sprBosssss(这个随意),重点是将图像的中心Origin选到spr的中心,方便我们进行旋转动作。精彩内容,尽在百度攻略:https://gl.baidu.com 再确定一个地形(房间中不要放camera与playMusic,因为我们用不到它们):精彩内容,尽在百度攻略:https://gl.baidu.com 我们选择BOSS在右边上下运动,玩家在左边攻击BOSS这种常见的BOSS模式。精彩内容,尽在百度攻略:https://gl.baidu.com现在我们就需要对BOSS的obj进行编辑了,新建一个obj,取名叫objBoss。给这个obj新建一个Create事件,在里面初始化一些变量:设置最大血量maxHp为30,当前血量nowHp为最大血量maxHp;由于这个spr较小,我们将它的x轴、y轴方向均拉伸为原来的3倍,方便玩家击中BOSS;再停止所有声音,并且循环我们用于BOSS战的音乐。 精彩内容,尽在百度攻略:https://gl.baidu.com接下来我们需要设置BOSS的移动模式,在房间右侧上下移动。 精彩内容,尽在百度攻略:https://gl.baidu.com内置变量ystart表示当前obj在创建时的y轴坐标。这里的200为boss的振幅,也就是运动区域长度的一半,当我们将这个obj放在(608,304)这个初始位置时,那么obj的运动范围就是(y:104~504)这个范围。如果我们想让BOSS在4秒之内完成(初始位置→最高点→初始位置→最低点→初始位置)的周期循环的动作,可以计算得出每步yy应该增加的值为2*π/(4*room_speed),即pi/100。(如果你不会计算的话,多带几个值进去试试就行了,pi/100在0.3左右) 但是BOSS就只这样上下运动似乎呆板了一点,我们可以给boss加上一点旋转的代码:精彩内容,尽在百度攻略:https://gl.baidu.com 这样一个会旋转并且移动的boss雏形便有了。当然作为一个boss,我们要能够攻击它才行。添加一个与bullet的碰撞事件(bullet在player_etc文件夹下):精彩内容,尽在百度攻略:https://gl.baidu.com在其中添加代码: 精彩内容,尽在百度攻略:https://gl.baidu.com这里用到了另一个脚本:flashobject。这个脚本可以让你的obj闪烁一段时间,由两个参数构成:第一个参数表示每次闪烁所经历的时间,第二个参数表示闪烁的次数。值得注意的是,在闪烁的时候,该obj的flash变量会被设为1,但代码中提到只有在flash变量等于0的时候,才会继续执行底下的动作,这样便达到了在闪烁的时候无敌的效果。我在这里采用了flashobject(2,3)的数值,也就是每攻击一次boss,boss会有2*3=6步=0.12秒的无敌时间,推荐大家将无敌时间设得短些,血量可以适当增加,这样的话玩家就可以一直攻击BOSS,削减BOSS血量,打起来也会更有满足感,谁愿意去打一个一直在闪啊闪处于无敌状态的BOSS?在攻击BOSS时,我们也要播放击打boss的音效“sndBossHit”,并且将boss的当前血量减1。这之后我们需要将击打boss的子弹给摧毁掉(这里的other指的就是与boss碰撞的子弹)。在此之后,如果当前血量为0,我们就将这个boss给摧毁掉,代表我们打死了boss,通过了这一关,并且播放一下boss死亡的音效(既然boss是个砖头,我这里就使用了sndbreak,如果是普通的boss的话可以选用sndDeath,至于具体选用哪个音效还需要大家自己判断了,没有合适的音效的话可以去网上搜一下,这里推荐两个网站:TAM-Music:和魔王魂:)。 这样与子弹的碰撞事件就算暂时完成了。将父对选择为playerKiller之后,我们便得到了一个30HP、上下旋转移动、用子弹可以打死但是只有体术判定的BOSS。测试一下吧!将BOSS放到房间中的(608,304)位置(x轴坐标可以自行调整,但y轴坐标最好位于房间中心),运行游戏测试。(如果不会运行游戏、跳转到BOSS房间等操作的话请先去基本教程看看~)精彩内容,尽在百度攻略:https://gl.baidu.com 有了基本的创建、运动、被击打的事件之后,我们就要着手制作BOSS的攻击方式了。这里示范制作几个攻击方式供大家参考。精彩内容,尽在百度攻略:https://gl.baidu.com 5L:一般来说攻击方式都是用Alarm事件来实现的,这样可以方便重复调用,并且各个攻击方式之间的切换比较容易。下面我们进行第一种攻击方式的编辑。精彩内容,尽在百度攻略:https://gl.baidu.com 简单的描述这种效果如下:精彩内容,尽在百度攻略:https://gl.baidu.com快速朝着player连续分裂发射5次苹果 → 等较长的一段时间 → 继续快速分裂发射5次苹果→……首先我们来制作向player连续分裂发射5次苹果的obj(发射器):新建一个obj叫做objShooter1,在create事件中写入代码:精彩内容,尽在百度攻略:https://gl.baidu.comalarm[0]=1;表示立即调用Alarm 0事件,在Alarm 0事件中制作攻击方式:精彩内容,尽在百度攻略:https://gl.baidu.com 大家还记得splitobject吗?忘了的同学可以回到3L查看一下…我在这里又新建了一个obj叫做objBossShoot,其实就是复制了引擎中的deliciousFruit(苹果的obj),并将create事件中的image_speed设为了0,因为deliciousFruit这个obj的苹果会不停晃动,比较弹幕的美观效果;同时需要注意的是,在弹幕飞出房间后会执行的Outside Room事件中,我们需要摧毁该obj,否则随着房间中的obj越来越多,游戏就会越来越卡。精彩内容,尽在百度攻略:https://gl.baidu.com总之这样我们每次调用Alarm 0事件的时候,便会朝着player分裂发射出一波弹幕,播放射子弹的音效并且将count变量+1,这样在分裂发射5次之后,count变量便会达到5,从而不满足if中的条件,转而执行else中的销毁自身的动作。这样我们就做出了boss的第一个发射器。当然我们想让这个发射器的弹幕看起来是boss发出来的,所以我们在step事件中,让这个发射器的x,y坐标总是与boss的x,y坐标重合: 精彩内容,尽在百度攻略:https://gl.baidu.com完成了objShooter1的制作后,我们要做的便是在boss的Alarm事件中创建这个发射器,完成这个攻击方式的制作。 在objBoss中新建一个Alarm 0事件,写入代码:精彩内容,尽在百度攻略:https://gl.baidu.com 每次调用该事件便会创建一个发射器,发射器会为我们向player快速发射5次弹幕(发射这5波弹幕所用的时间为5*6=30步,所以我们让这边的时间等的长一点,暂用精彩内容,尽在百度攻略:https://gl.baidu.comalarm[0]=75试试)。这里与刚刚相同,也只连续发射5次,之后休息一长段时间,代表这次攻击方式已经结束。这时候我们可以运行游戏试试了!不过运行之前别忘记了在Create事件中加一行:alarm[0]=1,alarm事件是不会自己执行的哦。 这样我们便完成了第一个攻击方式的制作。希望大家理解发射器、用变量记录发射次数的思想。精彩内容,尽在百度攻略:https://gl.baidu.com 6L: 精彩内容,尽在百度攻略:https://gl.baidu.com接下来到第二种攻击方式了,这种比较常见,也就是天上掉刺下来。 精彩内容,尽在百度攻略:https://gl.baidu.com新建一个Alarm 1事件:这次我们同时创建15个往下落的刺,为了减少玩家被刺封位封死的几率,我们让刺的下落速度带一点随机性:新建一个obj叫做objBossShoot2,给它一个向下的刺的spr,父对选为playerKiller。 在create事件中加入如下代码:精彩内容,尽在百度攻略:https://gl.baidu.com 这里使用了整数随机的函数irandom(),这样刺的下落速率便有7个值可供选择:精彩内容,尽在百度攻略:https://gl.baidu.com0.5+0.8*(0~6选1),便于创造空隙让玩家穿过,同时也不至于太随机,导致无缝可穿。回到objBoss的Alarm 1事件,添加如下代码:精彩内容,尽在百度攻略:https://gl.baidu.com 我们每2秒在房间左数第2格~左数16格每格的上方创建一个刺。这里的repeat(15)便会将大括号中的动作重复15次,也就是:instance_create(32+32*i,-32,objBossShoot2); (在32,-32创建刺)精彩内容,尽在百度攻略:https://gl.baidu.comi += 1;(此时i=1)instance_create(32+32*i,-32,objBossShoot2); (在64,-32创建刺)i += 1;(此时i=2)精彩内容,尽在百度攻略:https://gl.baidu.com…(一共15次)…instance_create(32+32*i,-32,objBossShoot2);(在480,-32创建刺)i += 1;(此时i=15)精彩内容,尽在百度攻略:https://gl.baidu.com这两行代码被重复执行15次的途中,i的值也在不断增加,产生刺的位置也在一格一格地向右移动。注意:这样写只是为了方便大家理解,实际上这15个动作执行还是在同一步之内完成的,也就是15个刺的创建时间是相同的,并没有先后之分。 接下来将Create事件中的alarm[0]=1换为alarm[1]=1,测试一下刺雨这个攻击方式吧!希望大家够学会使用repeat语句,用途十分广泛。当然这里你可以设计自己的攻击,比如加精彩内容,尽在百度攻略:https://gl.baidu.com入计时器使BOSS发射一定次数的刺雨进入下个攻击方式,将刺的横向速度或者重力都加上点随机性,甚至可以上下一起出刺……发挥想象力吧! 7L:精彩内容,尽在百度攻略:https://gl.baidu.com第二个攻击方式也制作完成后,我们就开始第三种攻击方式的制作吧。 精彩内容,尽在百度攻略:https://gl.baidu.com这次我们让BOSS旋转着发射苹果,但不直接朝着玩家发射,而是有规律的在周围转着圈发射,这些发出来的苹果经过一定的时间,会飞向player成为自机狙。我们先来制作发射用的苹果:复制一个objBossShoot的obj,重命名objBossShoot3,我们新建一个Alarm 0事件,在Alarm 0事件中让苹果的速度归零:精彩内容,尽在百度攻略:https://gl.baidu.com 新建一个Alarm 1事件,在Alarm 1事件中让这个苹果飞往玩家的方向:精彩内容,尽在百度攻略:https://gl.baidu.com 接下来就需要确定这两个时间在苹果被创建后被调用的时间了。BOSS发射苹果的速度我们设置得快一点(比如10),如果我们让这个obj在经过10步后停下来,那么它移动的距离为10*10=100像素,这个距离还不错,我们就在Create事件中让alarm[0]=10,并且让飞向玩家的时间alarm[1]=50:精彩内容,尽在百度攻略:https://gl.baidu.com 这样这个先停止,再飞向玩家的obj就做好了,下面我们需要在objBoss中创建这个弹幕了: 在objBoss中新建一个Alarm 2事件,写入如下代码:精彩内容,尽在百度攻略:https://gl.baidu.com 这里我们仍然使用变量来记录发射次数,这次换一个变量叫做count3(因为是第三种攻击方式)。精彩内容,尽在百度攻略:https://gl.baidu.com每次调用Alarm 2事件的时候,就会在与boss重合的位置创建一个objBossShoot3的obj,与此同时,由于我们使用了a = instance_create(x,y,objBossShoot3) 这行代码,现在a这个变量代表的就是我们刚刚创建出来的objBossShoot3这个obj,所以我们就可以使用a.speed = 10这个语句来代表“让a的速度等于10”,同时每次调用的时候会将count3这个变量增加一次,以此监控一轮攻击中只发射16个objBossShoot3这个obj,发射间隔为7步。由于每次调用这个事件的时候,dir变量都会增加15,所以BOSS发射出这些弹幕的方向就会从0,15,30,45……这样线性递增。考虑到弹幕飞出去之后静止到运动再飞向玩家的时间,我们暂时将每轮攻击之间的间隔设置为120步。 那么第三个攻击方式的制作也到此完成了!在Create中将alarm[1]=1改为alarm[2]=1来测试一下这个攻击方式吧。希望大家能掌握精彩内容,尽在百度攻略:https://gl.baidu.coma=instance_create(xx,yy,obj);a.xxx=a.zzz=qqq的这种创建obj的方式,在任何时候都是很有用的。比如之前我们制作的朝玩家不断发射刺的obj,其实完全可以这样写:精彩内容,尽在百度攻略:https://gl.baidu.com发射器的Alarm 0事件:a = instance_create(x,y,objSpike);a.speed = 5;精彩内容,尽在百度攻略:https://gl.baidu.coma.direction = point_direction(x,y,player.x,player.y);a.image_angle = point_direction(x,y,player.x,player.y)-90;alarm[0]=50;精彩内容,尽在百度攻略:https://gl.baidu.com这样一来,朝玩家飞的那个刺中就不需要添加任何事件了,速度/方向/图像旋转角度在一创建的时候就已经被确定了。这个obj只需要父对playerKiller,选择一个原点在spr中心的刺spr就完成了。这样一来我们本要从两个obj中来调试这一组攻击方式,现在代码全部转移到了发射器中,也更方便我们调试了。 8L:精彩内容,尽在百度攻略:https://gl.baidu.com目前为止我们制作的都是单个攻击方式,如何让这些攻击方式联系、组合起来呢?一般来说我们有两种方式:顺序执行与随机执行。顺序执行的话要求玩家记忆BOSS的攻击顺序,也就是俗称的背版BOSS;随机执行考验的则是玩家的操作与反应能力,但也要求BOSS在施放招数的时候给予玩家的一定时间来反应。其实不能说这两者哪种好哪种坏,只是随机BOSS对制作者的能力要求较高,要制作不错的随机攻击方式,并且让这些攻击方式有一定的难度、但又不至于没时间反应如何躲避是很有难度的。所以当你上手制作一个你自己的BOSS的时候,推荐你从顺序攻击模式开始。顺序攻击模式的制作方法如下:将Alarm 0中的“alarm[0]=200; ”改为“alarm[1]=75;”(之前设置为200只是为了方便看出一轮攻击一共有多少波弹幕,这里将速度改为正常的75);将Alarm 1事件中的“alarm[1]=100”改为“alarm[2]=100”;将Alarm 2事件中的“alarm[2]=120”改为“alarm[0]=120”,这样便完成了一个顺序攻击模式的BOSS了精彩内容,尽在百度攻略:https://gl.baidu.com(攻击顺序为0→1→2→0,你也可以设计你自己的攻击顺序),再在create事件中选择一个合适的事件作为起手攻击事件即可(比如Create:alarm[0]=1;)。这里我做的这些攻击方式由于都比较容易躲避,所以设计成随机的也是完全没有问题的,制作随机攻击模式也不难,只需要将触发下一个攻击方式的语句改为这样:“alarm[choose(0,1,2)]=….(原来的alarm值)”即可。更近一步,如果你不想让同一个攻击方式重复出现,那么你可以在alarm 0中写alarm[choose(1,2)]=75;alarm 1中写精彩内容,尽在百度攻略:https://gl.baidu.comalarm[choose(0,2)]=100 等等,在某种攻击方式中的下一轮攻击只调用其他的攻击方式。 同时,当boss将玩家杀死时,我们可以将boss的攻击停止下来,甚至放个嘲讽脸:我们在step中检查player这个obj是否存在,如果不存在的话,则停止所有攻击方式。 精彩内容,尽在百度攻略:https://gl.baidu.com当然作为一个BOSS,当我们打败它的时候,应该会得到bossitem或者其他的道具。 我们可以为BOSS添加一个Destroy事件: 精彩内容,尽在百度攻略:https://gl.baidu.com顾名思义,Destroy事件就是obj在被摧毁时会执行的事件。我们在这里创建bossitem1,并播放音效: 精彩内容,尽在百度攻略:https://gl.baidu.com引擎中已经有了这个bossitem1这个obj,我们需要对它进行一些修改。这个obj的核心事件在于与player的碰撞事件,在这个事件中,global.boss[1]被记录为1,标志着我们打倒了第一个boss。 精彩内容,尽在百度攻略:https://gl.baidu.com但是bossitem1的create事件和step事件对于现在我们所制作的部分来说是多余的,可以删掉它们。将碰撞player的事件修改如下:记录boss已被击破,播放一个拿到item的音效,接下来我们在bossitem1的正上方2格处创建一个通往房间rQ3的warp,然后摧毁自身。别忘了给这个bossitem1一个好看的spr(bossitem1的spr的名称应取为bossicon1,这样在选关的界面中才会显示出打倒了这个BOSS,然而引擎中在Sprites→miku文件夹中已经自带了一个bossicon1,将它删掉或者重命名即可),并勾上visible使其可见。精彩内容,尽在百度攻略:https://gl.baidu.com 看到这里你应该可以制作一个基本会移动、会发射弹幕的BOSS了。把BOSS的创建、运动、被攻击、攻击方式、被摧毁几个事件都设置完毕之后,一个普通的BOSS就基本完成了。当然,boss的质量还是取决于攻击方式的好坏。希望大家可以从范例的攻击方式中学到一些有用的技巧。 精彩内容,尽在百度攻略:https://gl.baidu.com9L:简单的血条效果:新建一个obj,叫做objHPBar。增加Create事件,在其中初始化一些变量(这部分可以自精彩内容,尽在百度攻略:https://gl.baidu.com行修改):color_full = c_ //满血时血条颜色,c_lime为绿色color_empty = c_ //空血时血条颜色,c_red为红色,更多的颜色变量请参考自带帮助 draw_x = 32; //血条的左上角横坐标精彩内容,尽在百度攻略:https://gl.baidu.comdraw_y = 8; //血条的左上角纵坐标width = 32*23; //血条宽度height = 16; //血条高度精彩内容,尽在百度攻略:https://gl.baidu.comboss_obj = objB //boss所用obj的名称下面我们为它添加一个Draw事件,在其中绘制boss的血条。添加代码(如果你看不懂这些代码不要随便修改,顺便一提boss的血量要用nowHp和maxHp来表示才行): {if instance_exists(boss_obj){ //判断boss_obj是否存在于房间中精彩内容,尽在百度攻略:https://gl.baidu.compercentage = boss_obj.nowHp/boss_obj.maxHp; //boss当前生命值百分比
draw_set_color(color_full);
//设置绘制颜色为满血时候的颜色draw_set_alpha(percentage); //设置绘制不透明度,生命值越高,不透明度越高
draw_rectangle(32,8,32+32*23*percentage,24,0); //用满血时候的颜色绘制血条draw_set_color(color_empty); //设置绘制颜色为空血时候的颜色精彩内容,尽在百度攻略:https://gl.baidu.comdraw_set_alpha(1-percentage);
//设置绘制不透明度,生命值越低,不透明度越高draw_rectangle(32,8,32+32*23*percentage,24,0); //用空血时候的颜色绘制血条}精彩内容,尽在百度攻略:https://gl.baidu.comdraw_set_alpha(1); //还原正常绘制不透明度draw_set_color(c_black); //还原正常绘制颜色}精彩内容,尽在百度攻略:https://gl.baidu.com这样我们就做好了一个用于绘制Boss血条的obj,只用在boss被创建时创建这个obj,在boss被摧毁时一并摧毁即可。 10L:精彩内容,尽在百度攻略:https://gl.baidu.com多状态的BOSS制作。为了制作第二甚至第三状态,我们需要有一个变量来告诉我们现在正在进行到的状态数。在Create事件中添加一行:phase = 0;精彩内容,尽在百度攻略:https://gl.baidu.com表示我们当前在第一状态。当boss血量小于一定值的时候,我们可以改变这个变量来使BOSS进入第二甚至更多状态。下面在BOSS在碰撞子弹的事件中,加入一行判断语句,如果当前血量为10的话,我们进入boss的第二状态:精彩内容,尽在百度攻略:https://gl.baidu.com 这样你就可以用phase这个变量来制作第二状态了!下面制作几个简单的效果: 第二状态的时候,boss看起来应该会更狂暴一点,我们为它做一个spr吧!精彩内容,尽在百度攻略:https://gl.baidu.com 既然这个spr已经不止一帧了,为了保持第一状态的时候不变红,我们需要在create事件里面增加一行:image_speed = 0;精彩内容,尽在百度攻略:https://gl.baidu.com这时候我们就可以使用image_index来改变boss的外观了,image_index为0(默认情况)对应的就是image 0,image_index为1对应的就是image 1,以此类推。再将碰撞子弹的事件中间一部分改为:if(nowHp=10){精彩内容,尽在百度攻略:https://gl.baidu.comphase = 1;image_index = 1;}精彩内容,尽在百度攻略:https://gl.baidu.com光有外观上的变化还不行,boss的运动和旋转速率也可以加快一点: 精彩内容,尽在百度攻略:https://gl.baidu.com像这样使用if-else语句,则可完成大部分的元素(外形、运动、攻击方式等等)在状态1到状态2之间的转变。同理,在BOSS的攻击方式中,也可以用if-else来进行第二状态的编写:例如BOSS的攻击方式1的弹幕obj(objBossShoot)中,新增一个step事件,在其中判断如果BOSS进入到了第二形态的话,每步将方向改变0.5,这样就有了一个简单的曲线弹(虽然这样就不能命中player了)。其他的攻击方式也以此类推制作强化攻击模式,在这里就不再赘述。精彩内容,尽在百度攻略:https://gl.baidu.com 接下来,当BOSS进入状态2时,我们可以制作一个地板塌陷的效果,由于此时地板需要执行塌陷的动作,所以我们不能使用普通block+贴图的组合来当地板,而应该用独立的obj来当地板了。我们首先制作一个地板砖的spr:精彩内容,尽在百度攻略:https://gl.baidu.com我们拥有的tile素材是这样的: 精彩内容,尽在百度攻略:https://gl.baidu.com在spr编辑窗口中,执行Create fron strip…命令,调整好参数,就可以方便地得到这样一个spr: 精彩内容,尽在百度攻略:https://gl.baidu.com有了spr之后,我们新建一个obj,选择该spr,父对选择block,并且勾上Visible与Solid。 精彩内容,尽在百度攻略:https://gl.baidu.com这样一个能踩的砖就做好了,我们将它铺进房间: 精彩内容,尽在百度攻略:https://gl.baidu.com下面我们制作砖块塌陷时候的动画: 新建一个obj,选择sprBlock作为spr,在Create事件中,我们为它添加一个竖直方向的初精彩内容,尽在百度攻略:https://gl.baidu.com速度与重力: 精彩内容,尽在百度攻略:https://gl.baidu.com在Step事件中,我们让它不停旋转: 精彩内容,尽在百度攻略:https://gl.baidu.comOutside Room事件一般都是用来摧毁obj的,这里就不再叙述。 下面我们让砖块在被摧毁的时候播放动画即可:精彩内容,尽在百度攻略:https://gl.baidu.com 接下来我们将BOSS碰撞子弹事件的一部分改为:精彩内容,尽在百度攻略:https://gl.baidu.comif(nowHp=10){phase = 1;image_index = 1;精彩内容,尽在百度攻略:https://gl.baidu.comwith(objBlockBreak){instance_destroy();}精彩内容,尽在百度攻略:https://gl.baidu.com}这样当BOSS进入状态2的时候,便会摧毁最下面的一条砖,然而最下面的一条砖在被摧毁时又会创建objBlockDestroy(塌陷动画)这个obj,那么我们现在就达到了当BOSS进入状态2的时候,摧毁底下的地板的效果。 精彩内容,尽在百度攻略:https://gl.baidu.com11L:我们当然希望状态2显得更与众不同一点,这个时候我们就需要状态2独特的攻击方式了,这个攻击方式往往要比状态1的更难一些,下面是一个简单的示意图精彩内容,尽在百度攻略:https://gl.baidu.com 首先发射器朝左边移动,在移动的同时创建苹果,一段时间之后,这些苹果分别飞向各个方向,虽然图中有点难以辨认,我们还是可以看出从编号2到7,方向是逐渐往逆时针方向旋转的。为了实现这个效果,首先我们需要制作这样一个发射器:新建obj,取名objShooter2。增加create事件:精彩内容,尽在百度攻略:https://gl.baidu.com 设置发射器移动的速度,图像播放速度,并随机一下初始发射苹果的角度方向,接下来立即精彩内容,尽在百度攻略:https://gl.baidu.com执行Alarm 0。 新增一个Alarm 0 事件: 精彩内容,尽在百度攻略:https://gl.baidu.com在Alarm 0事件中,我们不断的创建objBossShoot4这个obj,仅仅给它赋予一定的方向,但是不赋予它速度,所以objBossShoot4在一创建的时候是静止的,接下来我们只用在objBossShoot4这个obj中,在一定的时间(比如1秒)后用一个alarm事件让它有一个速度(例如5),即可达到这个攻击方式的基本效果。这里我们的发射器的移动速度为10,每5步创建一个苹果,这样一来苹果与苹果之间的间距为50像素,这个宽度是合情合理的。创建苹果的时候,设置苹果的方向变量等于dir,每次调用Alarm 0的时候,dir都会增加34。为什么选用34?这里的数值首先要大小合适(由测试决定,大概在20~40的范围),让玩家能够看出这些苹果方向的规律,但最好不要取例如30的整数,因为我们想让这些苹果的方向各不相同,如果这个数值能被360整除,苹果的方向就会循环了。 精彩内容,尽在百度攻略:https://gl.baidu.com完成了发射器与弹幕的obj之后,我们需要在boss中创建这个发射器即可:objBoss中新建一个Alarm 3事件,写入如下代码:精彩内容,尽在百度攻略:https://gl.baidu.com 这里使用count4计数,每轮攻击会创建4个发射器,都是从屏幕外面瞄准玩家创建,创建的方位分别为player的右边、下面、左边、上面。因为在发射器中已经设置过速度了(speed=10),所以我们这里只用给予发射器一个方向即可。接下来我们首先测试一下这个攻击方式,在create中写alarm[3]=1,运行游戏测试一下吧!精彩内容,尽在百度攻略:https://gl.baidu.com由于第四种攻击方式(Alarm 3)是第二状态独有的,所以我们可以在血量降为10的瞬间,就来一次这种攻击方式给玩家示示威,那么我们可以将碰撞子弹事件的一部分改为这样: if(nowHp=10){phase2 =with(objShooter1){精彩内容,尽在百度攻略:https://gl.baidu.cominstance_destroy();}alarm[0]=0;精彩内容,尽在百度攻略:https://gl.baidu.comcount=0;alarm[1]=0;alarm[2]=0;精彩内容,尽在百度攻略:https://gl.baidu.comcount3=0; //停止Alarm 0~2alarm[3]=40;sound_fix(sndBlockChange); //进入第二状态的音效精彩内容,尽在百度攻略:https://gl.baidu.comsound_fix(sndbreak);
//地板塌陷的音效image_index = 1;with(objBlockBreak){精彩内容,尽在百度攻略:https://gl.baidu.cominstance_destroy();}}精彩内容,尽在百度攻略:https://gl.baidu.com在这里我们让alarm[0]为0,即可停止Alarm 0这个事件,但别忘了将Alarm 0的计数器”count”一并清零。接下来我们给玩家一点时间躲避遗留在屏幕上的弹幕,就可以来个示威了! Alarm 3事件执行4次之后,我们应该更换攻击方式了:精彩内容,尽在百度攻略:https://gl.baidu.com若想让Alarm 3调用其他的三个攻击方式,很容易,大家应该都会: 精彩内容,尽在百度攻略:https://gl.baidu.com但在其他的三个攻击方式中,只有在BOSS处于第二状态的时候才能调用这第四个攻击方式:精彩内容,尽在百度攻略:https://gl.baidu.com 如有更多的状态,可以以此类推,例如:精彩内容,尽在百度攻略:https://gl.baidu.com 那么多状态BOSS的教程就到这里结束了。对于多状态的BOSS,只要根据phase变量的不同,让各个攻击方式随着BOSS的各个状态来改变即可。 精彩内容,尽在百度攻略:https://gl.baidu.com12L:BOSS制作——效果篇一、闪白。相当于闪光的特效,可以达到视觉冲击的效果(同时可以掩盖一些突兀的效果,例如BOSS突然创建了一堆obj,直接创建这些obj会给玩家一种“这玩意哪来的?”的感觉,而加入一个闪白效果则可以直接使形势逆转“哇画面一闪就多出来这么个东西诶?”)。同时注意不要滥用这个特效,否则会伤害玩家的眼睛。。。实现方法:新建一个obj,给它一个纯白色的spr,spr大小为32*32,在create事件中,将spr的x,y方向拉伸到与屏幕等大,深度尽量小使它保持在屏幕最前端:精彩内容,尽在百度攻略:https://gl.baidu.com 添加一个Step事件,在其中不断减小这个obj的不透明度(image_alpha),历时10步减少到0,在这个obj的不透明度小于0之后,则将它摧毁即可。精彩内容,尽在百度攻略:https://gl.baidu.com 二、屏幕抖动。同样这也是一个视觉冲击的效果,同样不要乱用,用多了会造成玩家眼花。。。值得注意的是,如果房间中存在camera的话,这个obj就会失效,这点请务必注意。 实现方法:新建一个obj,增加Create事件:精彩内容,尽在百度攻略:https://gl.baidu.com{alarm[0]=10; //10步后摧毁,震动时间可以自定。xview=view_xview[0]; //记录当前的视野左上角x坐标(在这里为0)精彩内容,尽在百度攻略:https://gl.baidu.comyview=view_yview[0]; //记录当前的视野左上角y坐标(在这里为0)}增加Alarm 0事件:精彩内容,尽在百度攻略:https://gl.baidu.com{view_xview[0]= //还原视野x坐标view_yview[0]= //还原视野y坐标精彩内容,尽在百度攻略:https://gl.baidu.cominstance_destroy(); //摧毁当前obj}增加Step事件:精彩内容,尽在百度攻略:https://gl.baidu.com{view_xview[0]=xview+random_range(-15,15); //x轴方向震动view_yview[0]=yview+random_range(-5,5); //y轴方向震动,应比x轴震动范围小些,因为人眼对上下的晃动更加敏感。精彩内容,尽在百度攻略:https://gl.baidu.com} 三、拖影效果。BOSS发射的苹果如果拖个小尾巴是不是有种更炫酷的感觉?为了完成这个效果,你需要新建一个空的obj,添加一个step事件:精彩内容,尽在百度攻略:https://gl.baidu.com在你想要使用效果的obj的step事件中,添加如下代码(没错跟闪白是一样的): 精彩内容,尽在百度攻略:https://gl.baidu.com(改变不透明度)或者:精彩内容,尽在百度攻略:https://gl.baidu.com(改变图形大小)甚至不透明度和图形大小一起改变也是没问题的。精彩内容,尽在百度攻略:https://gl.baidu.com 接下来在你想要实现拖影效果obj的step事件中(这里以objBossShoot3为例)加入以下代码:if(shadow == 1){ //如果我们启用了拖影效果精彩内容,尽在百度攻略:https://gl.baidu.comshadow_timer += 1; //拖影计时器每步增加1if(shadow_timer == 5){ //每5步创建一个影子的obj,这个数值可以自行调整
a=instance_create(x,y,objShadow);a.sprite_index=sprite_精彩内容,尽在百度攻略:https://gl.baidu.coma.image_index=image_a.image_speed=image_a.image_xscale=image_精彩内容,尽在百度攻略:https://gl.baidu.coma.image_yscale=image_a.image_alpha=image_a.image_angle=image_精彩内容,尽在百度攻略:https://gl.baidu.coma.image_blend=image_ //影子obj继承当前obj的所有绘制属性
a.depth=depth+1; //影子应该位于当前obj的后方shadow_timer=0; //重设拖影计时器}精彩内容,尽在百度攻略:https://gl.baidu.com}接下来,我们只需要在想激活拖影效果的时候,让变量shadow为1即可。这里我们让苹果在往玩家方向移动的时候再启用拖影效果,也就是在Alarm 1事件中改变:精彩内容,尽在百度攻略:https://gl.baidu.com 那么拖影效果也就介绍到这里了。讲完了这三个基本特效的制作之后,就是改造我们的BOSS的时间了!首先我们为BOSS加一个出场动画:新建一个obj叫做objIntro。之前我们是在BOSS的create中停止bgm,现在将它移到这个出场动画的obj中。(objBoss创建的时候不要sound_stop_all)精彩内容,尽在百度攻略:https://gl.baidu.com Alarm 0:精彩内容,尽在百度攻略:https://gl.baidu.com Alarm 1:精彩内容,尽在百度攻略:https://gl.baidu.com Alarm 2:精彩内容,尽在百度攻略:https://gl.baidu.com Alarm 3:精彩内容,尽在百度攻略:https://gl.baidu.com Step:精彩内容,尽在百度攻略:https://gl.baidu.com 按下键盘上的S键:精彩内容,尽在百度攻略:https://gl.baidu.com 由于我们的boss大小是普通砖块的3倍,这里就加个简单的动画,让它从普通大小变到3倍。Alarm事件中的动作均为放大boss的spr,闪白,播放音效。但每个Alarm的发动的时间不同:75,150,175,190,这样各个Alarm之间的时间间隔越来越小,给人一种紧凑感。在Alarm 3中我们将objIntro摧毁,并创建objBoss。在objIntro存在的情况下同样要使player不能移动(player.frozen = true);并且当玩家按下S键的时候,应该能够跳过开场动画,直接进行boss战。记得在boss的create事件中,加入一句“player.frozen =”来解除玩家的锁定。精彩内容,尽在百度攻略:https://gl.baidu.com 接下来我们在BOSS刺雨的攻击方式中,不妨加一点屏幕抖动的效果:进入BOSS的obj中,Alarm 1事件加入一行创建屏幕抖动效果的代码。精彩内容,尽在百度攻略:https://gl.baidu.com
精彩内容,尽在百度攻略:https://gl.baidu.com同时在BOSS转换形态时,我们也可以让屏幕闪白一下来提示玩家BOSS已进入第二形态。接下来在BOSS被击破之后,同样地可以制作一个BOSS死亡的动画。这里简单的说明一下创建死亡动画的步骤(至于动画是被火烧了、被水淹了还是被炸了大家自行想象,这里以一个简单的掉到地平线下方为例)。新建一个obj叫做objBossDestroy:精彩内容,尽在百度攻略:https://gl.baidu.comCreate事件: 精彩内容,尽在百度攻略:https://gl.baidu.com由于是BOSS被BOOM之后的动画,我们应该让它们的外观相似。与地板塌陷的效果同理,我们给这个obj一个向上的初速度与重力。Step事件用于旋转obj,Outside Room事件用于销毁obj,这些都与地板塌陷的效果相同。这里就不再叙述,重要是我们应该把刚刚boss的Destroy事件移到这个obj的Destroy事件中:精彩内容,尽在百度攻略:https://gl.baidu.com 在boss的Destroy事件中,我们直接创建这个obj即可(顺便闪一闪):精彩内容,尽在百度攻略:https://gl.baidu.com 接下来就测试吧!不停的改变各个数值直到你满意的难度为止。也可以加入更多的攻击方式,更多的状态,给每种攻击方式在不同的状态下添加更多的效果。总之现在我们做出来的这个只能说是一个不错的BOSS,但提升空间还是有许多的,大家一起加油学习BOSS制作吧!精彩内容,尽在百度攻略:https://gl.baidu.com好的那么进阶篇也到此结束了!!完结\(^o^)/~——Fin——
射苹果-相关攻略推荐

我要回帖

更多关于 怎么才能得到比特币 的文章

 

随机推荐