【教程】MC粒子特效紅石音樂入門-基本原理

前言
本系列將從入門和進階兩個階段,大致講一下MC粒子特效紅石音樂。
入門為介紹基本原理,進階將會介紹一些具體的特效樣例供大家學習。
本教程中的數(shù)學原理部分均為初中內容,可放心食用~
本教程不會介紹關于音基方面的內容,需要具備這方面的基礎,如有需要可以到站內搜索其他專欄。
本系列教程是基于Minecraft?Java Edition 1.14實現(xiàn)的,其他版本可能會缺失部分指令,個別版本也有對應的解決辦法,up會提到其中的一部分,但其他版本由于up也沒用過,所以并不是很清楚。
由于是第一次寫教程,可能會存在某些內容表述不清,請諒解qwq
?
目錄大致如下,可能會根據(jù)情況進行調整
1.入門-基本原理(本專欄)
2.進階1-線段、拋物線
3.進階2-螺線
4.進階3-平滑圓弧(soma 3.0)
…
?

一、什么是粒子特效紅石音樂

視頻中,我們可以把音符對應到方塊上,前后表示時間,左右表示音高,然后通過一些連線方式將這些音符連接起來,使用/playsound等指令播放對應音高的音符。
連接這些方塊的是什么呢
我們首先要認識一個MC指令:/particle
wiki中的介紹如下

其中,name指粒子的名稱,比如末地燭粒子(endRod),pos指生成坐標,delta是運動方向,speed是運動速度,count是生成的粒子數(shù)量。
當然,對于初學者而言,可以不考慮動態(tài)粒子,因此可以先忽略delta、speed和count這些參數(shù)。
比如下方指令(Java版,基巖版見圖中格式)
particle endRod x y z 0 0 0 0 1 force
表示在游戲內坐標(x, y, z)生成一個endRod粒子。
理論上,可以通過按順序一點一點地生成許多粒子,來做到畫線的效果
也就是:描點作圖/窮舉法
因此,粒子特效紅石音樂的基本原理就是通過不斷地窮舉粒子,來達到將音符連線的效果
?
二、怎么實現(xiàn)
其實實現(xiàn)方法有很多,這里UP只介紹自己使用的一種方法。
我們來看一個好東西:mcfunction
mcfunction是一個后綴名為“.mcfunction”的文件,里面存儲了若干條mc指令,在1.14版本中,存放在{游戲文件夾}\saves\{存檔名}\datapacks\{數(shù)據(jù)包名}\data\{命名空間}\functions\里,在游戲中使用指令/function <命名空間>:<函數(shù)名>調用,我們可以把許多條particle指令寫入到一個mcfunction中,這樣就可以一次顯示多個粒子了。
其他版本(如1.12),請參考CV7026734
?
但是又有一個問題來了,怎么“一點一點”地窮舉而不是一下子全部窮舉出來呢?
我們再來看一個好東西:游戲刻(tick)
引用一下wiki

我們可以在一個tick中調用一個mcfunction,在下一個tick中再調用一個mcfunction,同時,MC 1.14中加入了一個指令:/schedule

其作用就是在<時間>后調用<函數(shù)>這個函數(shù)(廢話)
比如這條指令(Java版,基巖版見圖中格式)
schedule function note:1145 1t
就是在1tick后調用{數(shù)據(jù)包名}\data\note\functions\1145.mcfunction這個函數(shù)。
因此,我們只需要在每個mcfunction的結尾添加這條指令(設這個函數(shù)的名稱為x)
schedule function note:x+1 1t
即可(x和x+1都是數(shù)字,要算出來,別直接寫”+1”)
?
三、總結
重點即為上方紅色加粗字體,但是一定要注意游戲版本,比如/schedule這條指令是在1.14才加入的,而1.12可以使用gamerule gameLoopFunction {命名空間}:{函數(shù)名}這條指令,達到同樣的效果,其他版本則需要通過cb鏈(命令方塊鏈)來實現(xiàn),這里up就不過多贅述了。
下一篇是進階部分,會介紹部分常見特效及實現(xiàn)方法~
感謝各位的觀看~
(真的不點個關注嗎)