教你制作小球淘汰赛(3)场景完善以及基本关卡制作
场景的优化完善
制作完以上内容后,还是有一些小内容可以进行优化
1. 第一关的圆环删除
第一关的圆环如果给予一定的时间删除就不能保证比赛的随机性,而如果直接手动删除又会严重影响到观感。所以,综合以上两点,我给出2种合适的解决方法
第一种:添加快捷删除键

如上图,选择第一关的圆环,在快捷控制键里面找到删除键选项,选择合适的删除键即可
这样子当开始运行的时候,只需要按下这一个键就可以删除圆环了。
第二种:随机timeToLive
在圆环写下以下代码

这样的意思是当比赛开始的时候1-3秒内的任意时间圆环会自动删除,达到随机的效果,其中(rand.uniform01)的作用是在0-1之间取随机数
2. 预备格的设定
这一点在灰安教主的场景里面没有出现,但是我觉得有一定的价值,可以看得更清楚
在第一关的上方增加一小片区域,同时上移视角跟随方块,使空间大小等于上移距离

在小空间里面增加绿条,代码和过关的绿条相似,但是要传送到第一关的圆环里面,也就是在第一关的圆环里面添加一个圆点,存下一个坐标,让绿条传送
例如可以在绿条写下

第三句话是显示名字,可以删除(我这里是运用了_name这个变量,你们用materialName代替。之后在下面的圆点写下以下代码即可

接下来,把小球从第一关的圆环里面转移到上面的预备格中,再依次添加名字/注释即可

3. 闪队小球的碰撞优化
如果直接在小球里面写下闪队的代码,那么只会让小球变色,小球碰到排名框不能让排名框内的文字也一起变色,可以使用以下办法解决这个问题
创建五个小球或方框,把他们的颜色改为闪队的颜色,然后,时时刻刻用变量存储他们各自的颜色。

接下来,在需要闪的小球update中实时把他们的颜色改为这个变量中的颜色,并在oncollide里面写下以下代码

这段代码的大意是如果闪队小球碰到过关区文本框/排名框的时候就把他们的update设置为“textcolor=scene.my.……”,达到让排名框或其他需要更随变色的东西实时改变颜色。(_pp是物品是否需要改变颜色的意思)
当然,其他小球碰到排名框/过关区不需要让他们闪,只需要变色就行了,同时也要去除这个物体的update。在其他所有的小球里面写下以下代码即可

4. 淘汰条的简化设定
在上述方法中,如果是积分+末尾淘汰赛,那么就会让小球传送到错误的名次,并且49个淘汰条每一个都不一样,改起来也不方便,所以可以使用以下方法进行优化
第一步,在控制台中写下scene.my.num:=50表示创建一个变量储存剩余的小球数量
第二步,把淘汰条的传送代码修改为

_M表示所触碰到的物体是否为小球,eval代码为字符串拼接的意思,scene.my.no(n)就是每个排名框对应的位置。一开始一共有50个小球,所以第一关就会把小球传送到50名的位置
当然,不能每一个小球都传送到50名的地方,所以每传送一次小球都要把scene.my.num减去1。或者如果你选用了灰安教主排名方式,可以在小球的ondie里写下scene.my.num=scene.my.num-1
这样子,全部关卡的淘汰条中的代码就一样了,可以直接复制使用。
5. 碰撞作用层的巧妙运用
有时候,圆环、关卡、墙壁等东西会相互阻挡,产生一些乱七八糟的bug,让我们非常不愉快,例如关卡内的一个东西转到了圆环上,被传送到了圆环中间。为了防止这种事情的发生,我们需要设置一套合适的碰撞作用层,让所有物件正常运行,互不干扰
以下是一个示例(灰安教主的)
物件/作用层
正常小球 ABCDE
过关小球 E
圆环 C
起点标志球 (无)
关卡(普通) A
关卡特殊物件(如镭射笔)AE
过关条 D
关卡隔条 A
透明隔条 EIJ
关卡数显示框 (无)
过关区名称显示器 E
过关区下面的两个方框 E
淘汰条 E
排名数字框(无)
排名超小球/落点框 I
排名文本框 J
排名挡板 I
彩球颜色存储处 (无)
(如果直接淘汰,没有超小球,把文本框设为B)
需要改变小球的碰撞作用层时,改变小球的collideset即可,其中数字为2进制编码,对应如下表

总数即为对应的碰撞层的编码的和
A层 1
B层 2
C层 4
D层 8
E层 16
F层 32
G层 64
H层 128
I层 256
J层 512
所有的优化设定就讲完的,有什么其他的可以私信补充,接下来讲一下基本的关卡设定
关卡的基本制作
制作关卡有不同的难易程度,这一讲先讲述极其简单操作即可完成的关卡
1. 回家条
增加一个红色的方框,位置和绿色的过关条对齐
在回家条中写下以下代码代表回家(下面是消失代码,写不写都行)

需要注意的是,如果小球同时碰到回家和过关,会产生bug,所以一般需要增加一个小条隔开过关区和回家区。制作方法也很简单,先创建一个方框,用切割工具切开一个尖角即可

2. 圆球
创建一个圆球黏附到背景
3. 方框
创建一个方框黏附到背景
4. 斜着的方框
先创建一个方框黏附到背景,再选择旋转工具旋转
5. 三角形
创建一个长宽比1:2的方框,切割出2个尖角

再删去多余部分,剩下的东西黏附到背景即可
6. 被截断的物体
先创建一个物体黏附到背景,再创建一个物体,放置在需要切掉的地方,选择建构固体几何-差集,再删去后创建的物体即可

7. 组合的物体
和上一个类似,但是选择联集
8. 两个物体重叠的部分
和6类似,但是选择交集
9. 不规则多边形
只需要在左边的工具中选择多边形工具即可
10. 可染色物体
在脚本选单中设置_pp为true(前提:有上述第三条优化,否则在onCollide里写下color=e.other.color会有一半的效果(无法闪))
以上都是简单的静止物体,下一节将会教你们如何设计可以移动的物体,相信你们一定可以做出满意的作品!