教你制作小球淘汰賽(3)場景完善以及基本關(guān)卡制作
場景的優(yōu)化完善
制作完以上內(nèi)容后,還是有一些小內(nèi)容可以進行優(yōu)化
1.?第一關(guān)的圓環(huán)刪除
第一關(guān)的圓環(huán)如果給予一定的時間刪除就不能保證比賽的隨機性,而如果直接手動刪除又會嚴重影響到觀感。所以,綜合以上兩點,我給出2種合適的解決方法
第一種:添加快捷刪除鍵

如上圖,選擇第一關(guān)的圓環(huán),在快捷控制鍵里面找到刪除鍵選項,選擇合適的刪除鍵即可
這樣子當開始運行的時候,只需要按下這一個鍵就可以刪除圓環(huán)了。
第二種:隨機timeToLive
在圓環(huán)寫下以下代碼

這樣的意思是當比賽開始的時候1-3秒內(nèi)的任意時間圓環(huán)會自動刪除,達到隨機的效果,其中(rand.uniform01)的作用是在0-1之間取隨機數(shù)
2.?預(yù)備格的設(shè)定
這一點在灰安教主的場景里面沒有出現(xiàn),但是我覺得有一定的價值,可以看得更清楚
在第一關(guān)的上方增加一小片區(qū)域,同時上移視角跟隨方塊,使空間大小等于上移距離

在小空間里面增加綠條,代碼和過關(guān)的綠條相似,但是要傳送到第一關(guān)的圓環(huán)里面,也就是在第一關(guān)的圓環(huán)里面添加一個圓點,存下一個坐標,讓綠條傳送
例如可以在綠條寫下

第三句話是顯示名字,可以刪除(我這里是運用了_name這個變量,你們用materialName代替。之后在下面的圓點寫下以下代碼即可

接下來,把小球從第一關(guān)的圓環(huán)里面轉(zhuǎn)移到上面的預(yù)備格中,再依次添加名字/注釋即可

3.?閃隊小球的碰撞優(yōu)化
如果直接在小球里面寫下閃隊的代碼,那么只會讓小球變色,小球碰到排名框不能讓排名框內(nèi)的文字也一起變色,可以使用以下辦法解決這個問題
創(chuàng)建五個小球或方框,把他們的顏色改為閃隊的顏色,然后,時時刻刻用變量存儲他們各自的顏色。

接下來,在需要閃的小球update中實時把他們的顏色改為這個變量中的顏色,并在oncollide里面寫下以下代碼

這段代碼的大意是如果閃隊小球碰到過關(guān)區(qū)文本框/排名框的時候就把他們的update設(shè)置為“textcolor=scene.my.……”,達到讓排名框或其他需要更隨變色的東西實時改變顏色。(_pp是物品是否需要改變顏色的意思)
當然,其他小球碰到排名框/過關(guān)區(qū)不需要讓他們閃,只需要變色就行了,同時也要去除這個物體的update。在其他所有的小球里面寫下以下代碼即可

4.?淘汰條的簡化設(shè)定
在上述方法中,如果是積分+末尾淘汰賽,那么就會讓小球傳送到錯誤的名次,并且49個淘汰條每一個都不一樣,改起來也不方便,所以可以使用以下方法進行優(yōu)化
第一步,在控制臺中寫下scene.my.num:=50表示創(chuàng)建一個變量儲存剩余的小球數(shù)量
第二步,把淘汰條的傳送代碼修改為

_M表示所觸碰到的物體是否為小球,eval代碼為字符串拼接的意思,scene.my.no(n)就是每個排名框?qū)?yīng)的位置。一開始一共有50個小球,所以第一關(guān)就會把小球傳送到50名的位置
當然,不能每一個小球都傳送到50名的地方,所以每傳送一次小球都要把scene.my.num減去1?;蛘呷绻氵x用了灰安教主排名方式,可以在小球的ondie里寫下scene.my.num=scene.my.num-1
這樣子,全部關(guān)卡的淘汰條中的代碼就一樣了,可以直接復(fù)制使用。
5.?碰撞作用層的巧妙運用
有時候,圓環(huán)、關(guān)卡、墻壁等東西會相互阻擋,產(chǎn)生一些亂七八糟的bug,讓我們非常不愉快,例如關(guān)卡內(nèi)的一個東西轉(zhuǎn)到了圓環(huán)上,被傳送到了圓環(huán)中間。為了防止這種事情的發(fā)生,我們需要設(shè)置一套合適的碰撞作用層,讓所有物件正常運行,互不干擾
以下是一個示例(灰安教主的)
物件/作用層
正常小球 ABCDE
過關(guān)小球 E
圓環(huán) C
起點標志球 (無)
關(guān)卡(普通) A
關(guān)卡特殊物件(如鐳射筆)AE
過關(guān)條 D
關(guān)卡隔條 A
透明隔條 EIJ
關(guān)卡數(shù)顯示框 (無)
過關(guān)區(qū)名稱顯示器 E
過關(guān)區(qū)下面的兩個方框 E
淘汰條 E
排名數(shù)字框(無)
排名超小球/落點框 I
排名文本框 J
排名擋板 I
彩球顏色存儲處 (無)
(如果直接淘汰,沒有超小球,把文本框設(shè)為B)
需要改變小球的碰撞作用層時,改變小球的collideset即可,其中數(shù)字為2進制編碼,對應(yīng)如下表

總數(shù)即為對應(yīng)的碰撞層的編碼的和
A層 1
B層 2
C層 4
D層 8
E層 16
F層 32
G層 64
H層 128
I層 256
J層 512
所有的優(yōu)化設(shè)定就講完的,有什么其他的可以私信補充,接下來講一下基本的關(guān)卡設(shè)定
關(guān)卡的基本制作
制作關(guān)卡有不同的難易程度,這一講先講述極其簡單操作即可完成的關(guān)卡
1.?回家條
增加一個紅色的方框,位置和綠色的過關(guān)條對齊
在回家條中寫下以下代碼代表回家(下面是消失代碼,寫不寫都行)

需要注意的是,如果小球同時碰到回家和過關(guān),會產(chǎn)生bug,所以一般需要增加一個小條隔開過關(guān)區(qū)和回家區(qū)。制作方法也很簡單,先創(chuàng)建一個方框,用切割工具切開一個尖角即可

2.?圓球
創(chuàng)建一個圓球黏附到背景
3.?方框
創(chuàng)建一個方框黏附到背景
4.?斜著的方框
先創(chuàng)建一個方框黏附到背景,再選擇旋轉(zhuǎn)工具旋轉(zhuǎn)
5.?三角形
創(chuàng)建一個長寬比1:2的方框,切割出2個尖角

再刪去多余部分,剩下的東西黏附到背景即可
6.?被截斷的物體
先創(chuàng)建一個物體黏附到背景,再創(chuàng)建一個物體,放置在需要切掉的地方,選擇建構(gòu)固體幾何-差集,再刪去后創(chuàng)建的物體即可

7.?組合的物體
和上一個類似,但是選擇聯(lián)集
8.?兩個物體重疊的部分
和6類似,但是選擇交集
9.?不規(guī)則多邊形
只需要在左邊的工具中選擇多邊形工具即可
10.?可染色物體
在腳本選單中設(shè)置_pp為true(前提:有上述第三條優(yōu)化,否則在onCollide里寫下color=e.other.color會有一半的效果(無法閃))
以上都是簡單的靜止物體,下一節(jié)將會教你們?nèi)绾卧O(shè)計可以移動的物體,相信你們一定可以做出滿意的作品!