【教程】MC粒子特效红石音乐入门-基本原理

前言
本系列将从入门和进阶两个阶段,大致讲一下MC粒子特效红石音乐。
入门为介绍基本原理,进阶将会介绍一些具体的特效样例供大家学习。
本教程中的数学原理部分均为初中内容,可放心食用~
本教程不会介绍关于音基方面的内容,需要具备这方面的基础,如有需要可以到站内搜索其他专栏。
本系列教程是基于Minecraft Java Edition 1.14实现的,其他版本可能会缺失部分指令,个别版本也有对应的解决办法,up会提到其中的一部分,但其他版本由于up也没用过,所以并不是很清楚。
由于是第一次写教程,可能会存在某些内容表述不清,请谅解qwq
目录大致如下,可能会根据情况进行调整
1.入门-基本原理(本专栏)
2.进阶1-线段、抛物线
3.进阶2-螺线
4.进阶3-平滑圆弧(soma 3.0)
…

一、什么是粒子特效红石音乐

视频中,我们可以把音符对应到方块上,前后表示时间,左右表示音高,然后通过一些连线方式将这些音符连接起来,使用/playsound等指令播放对应音高的音符。
连接这些方块的是什么呢
我们首先要认识一个MC指令:/particle
wiki中的介绍如下

其中,name指粒子的名称,比如末地烛粒子(endRod),pos指生成坐标,delta是运动方向,speed是运动速度,count是生成的粒子数量。
当然,对于初学者而言,可以不考虑动态粒子,因此可以先忽略delta、speed和count这些参数。
比如下方指令(Java版,基岩版见图中格式)
particle endRod x y z 0 0 0 0 1 force
表示在游戏内坐标(x, y, z)生成一个endRod粒子。
理论上,可以通过按顺序一点一点地生成许多粒子,来做到画线的效果
也就是:描点作图/穷举法
因此,粒子特效红石音乐的基本原理就是通过不断地穷举粒子,来达到将音符连线的效果
二、怎么实现
其实实现方法有很多,这里UP只介绍自己使用的一种方法。
我们来看一个好东西:mcfunction
mcfunction是一个后缀名为“.mcfunction”的文件,里面存储了若干条mc指令,在1.14版本中,存放在{游戏文件夹}\saves\{存档名}\datapacks\{数据包名}\data\{命名空间}\functions\里,在游戏中使用指令/function <命名空间>:<函数名>调用,我们可以把许多条particle指令写入到一个mcfunction中,这样就可以一次显示多个粒子了。
其他版本(如1.12),请参考CV7026734
但是又有一个问题来了,怎么“一点一点”地穷举而不是一下子全部穷举出来呢?
我们再来看一个好东西:游戏刻(tick)
引用一下wiki

我们可以在一个tick中调用一个mcfunction,在下一个tick中再调用一个mcfunction,同时,MC 1.14中加入了一个指令:/schedule

其作用就是在<时间>后调用<函数>这个函数(废话)
比如这条指令(Java版,基岩版见图中格式)
schedule function note:1145 1t
就是在1tick后调用{数据包名}\data\note\functions\1145.mcfunction这个函数。
因此,我们只需要在每个mcfunction的结尾添加这条指令(设这个函数的名称为x)
schedule function note:x+1 1t
即可(x和x+1都是数字,要算出来,别直接写”+1”)
三、总结
重点即为上方红色加粗字体,但是一定要注意游戏版本,比如/schedule这条指令是在1.14才加入的,而1.12可以使用gamerule gameLoopFunction {命名空间}:{函数名}这条指令,达到同样的效果,其他版本则需要通过cb链(命令方块链)来实现,这里up就不过多赘述了。
下一篇是进阶部分,会介绍部分常见特效及实现方法~
感谢各位的观看~
(真的不点个关注吗)