LuaSTG Sharp:高级循环
Luastg群内有关于高级循环功能的详细介绍,想要了解更多的话可以在群文件内搜索“高级循环指南”

众所周知在新版编辑器中加入了一个Advanced功能,在社区中被称作“高级循环”,那么高级循环怎么用呢,我们来看看吧。
“高级循环”的作用跟普通的循环是一样的(废话),事不宜迟我们来讲一下高级循环比起普通循环多了什么。
首先我们用普通的循环来写一个开花弹:


看起来简单又美好,所以我们现在用高级循环来写一个开花弹:

创建了一个高级循环之后发现里面居然有Variables这种东西,而且跟普通循环比较,编辑器窗口左边的循环变量栏也没有了。
这个时候就是两个循环中间的这些节点发挥作用的时刻了,这些节点就是“变量节点”,用右箭头在Variables里创建这些变量节点,就可以使用高级循环了。

大家会发现变量节点被分割成了三块,这里我来依次解释一下这七个变量节点是什么意思。
下面的内容会有点长,不要头晕来着(

增量变量:定义一个变量名,输入初始值和递增值,让这个变量在每次循环时增加一个递增值。

这个时候大家就会发现这不就是普通循环变量栏里的变量类型嘛。

【有限次循环变量】因为这些变量里要求输入初始值与终值,所以最好在有限次循环里放入这些变量
线性变量:定义一个变量名,输入初始值与终值,让这个变量从初始值逐渐变为终值。

线性变量下面还有两个参数,precisely是指变量在循环结束后是否为终值——换个方式说,就是小学数学里的植树问题;mode指定了变量从初始值变到终值时的变化函数,一共有四个选项可以选择:
MOVE_NORMAL,一次函数
MOVE_ACCEL,二次函数,加速
MOVE_DECEL,二次函数,减速
MOVE_ACC_DEC,两段二次函数,先加速到一半,再减速

正弦插值变量:定义一个变量名,输入初始值与终值,让这个变量以正弦函数的变化方式从初始值增加到终值。

正弦插值变量其实跟线性变量差不多,下面的interpolation也是可供选择的变化函数:
SINE_ACCEL,sin 函数-π/2~0 的那 1/4 周期
SINE_DECEL,sin 函数 0~π/2的那 1/4 周期
SINE_ACC_DEC,sin 函数-π/2~π/2的那半周期

正弦移动变量:定义一个变量名,输入初相,最小值,最大值,周期数,让这个变量在指定周期的正弦函数内变换。


自定义函数变量:定义一个变量名,输入x的初始值与终值,这个变量在循环内的值就是f(x)。

自定义函数变量
可以看到我们在最下面的interpolationFunc里编辑f(x)。

【无限次循环变量】虽然名字叫这个但其实也能在有限次循环里用
往复运动变量:定义一个变量名,输入x的初始值与另一个值,让这个变量在两个值内来回“震荡”


正弦震荡变量:定义一个变量名,输入初相,最小值,最大值,递增值。

这个递增值解释起来有点长,我举两个例子:omega为180时,变量会在两个值内来回震荡;omega为360时,变量就会变成一个固定的值。结合一下三角函数相关知识就能理解了。

介绍了这么多让我们赶紧看个例子,高级循环的好处就是方便,我们用不同的方式来写同一个开花弹:


好像并没有方便到哪里去,可能是因为教程不好举复杂的例子。所以我又写了一个例子。
这个例子里,我们用正弦震荡变量r控制开花的半径,增量变量a0控制开花的初始角度,用线性变量a1制作开花。

