欢迎光临散文网 会员登陆 & 注册

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

2022-06-27 08:05 作者:TianKong_y  | 我要投稿

前言

本系列将从入门和进阶两个阶段,大致讲一下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就不过多赘述了。

下一篇是进阶部分,会介绍部分常见特效及实现方法~

感谢各位的观看~

(真的不点个关注吗)


【教程】MC粒子特效红石音乐入门-基本原理的评论 (共 条)

分享到微博请遵守国家法律