关于函数与LuaSTG的教程
luastg吧
全部回复
仅看楼主
level 1
心想眼 楼主
食用本教程前请务必学会至少高中水平的数学和小学水平的语文。
本贴的目的便是将函数引入LuaSTG中,在教程中将会使用self.vx与self.vy来设置速度(因为垃圾Lua没有反三角函数),大概有一下几种形式
1速度固定型
self.vx=v*cos(a)
self.vy=v*sin(a)
2横向位移速度固定型
self.vx=v
self.vy=v*tan(a)=v*sin(a)/cos(a)
3纵向位移速度固定型
self.vx=v*cot(a)=v*cos(a)/sin(a)
self.vy=v
请务必理解后再食用
2018年07月26日 14点07分 1
level 1
心想眼 楼主
其次,我们要说的是参数方程。什么是参数方程,就是以
x=f(t)
y=g(t)
这样的形式,将x和y用另外一个变量t来统一的方程,举个最简单的例子,圆
圆的参数方程为
x=r*cos(t)
y=r*sin(t)
其中r表示半径,t表示角度。
设置变量t,每次循环+1,开始循环
发射弹幕位于self.x+r*cos(t),self.y+r*sin(t)
看到这儿诸位大概也发现了,发射弹幕位于一定的点,即是在boss的坐标上加上函数的两个变量。
t的意义最好确定好,以便于做特效,比如说在这里t就代表着角度。
2018年07月26日 15点07分 2
emm,给吞了一楼?,算了先不更了,明天看看被吞的出来没有,没出来再补上吧。
2018年07月26日 15点07分
level 4
你们都在观望那我就插个楼吧[滑稽]
2018年07月27日 09点07分 3
level 1
心想眼 楼主
补2l
函数和luastg的联系分为两个部分,排列和移动
第一部分即如何让弹幕按弹幕的函数的图像排列,首先举个例子吧
函数y=ax²+bx+c
如果想以坐标轴原点为boss位置,让弹幕以ADCB这个二次函数排列发射。
那么首先通过循环建立变量,通过循环每次变化实现自变量的改变。
过程如下
建立自变量x,设置初始值和变化值,开始循环
发射弹幕于点self.x+x,self.y+ax²+bx+c
即可
(由于插图就被吞只好生讲)
2018年07月27日 12点07分 4
忘记补充了,在处理y=1/x之类的函数要注意x不为0,以及y=根号x时x不为负数,这些是容易出bug的地方
2018年07月27日 12点07分
level 1
心想眼 楼主
由于一些比较复杂的曲线用极坐标方程表示更为简单,所以在这里稍微提一下极坐标方程。
极坐标方程的基本形式是
p=f(θ)或θ=g(p)
其中p为到原点距离,θ为与坐标轴夹角。
如果遇到这样的方程如对数螺线
p=e^aθ
这种首先将极坐标转换为参数方程
x=p*cos(θ)
y=p*sin(θ)
然后利用关系式将p替换成θ(或者反之)即可
2018年07月27日 12点07分 5
level 1
心想眼 楼主
第一部分相对简单,简单提及几句就可以过去,主要还是第二部分,如何让弹幕按函数的轨迹发射。
在具体讲如何实现前我要提及一个概念,导数。
导数是函数的局部性质。一个函数在某一点的导数描述了这个函数在这一点附近的变化率。如果函数的自变量和取值都是实数的话,函数在某一点的导数就是该函数所代表的曲线在这一点上的切线斜率。也就是函数该点到下一个点的连线与坐标轴的夹角的正切值。
实际上我们就是将函数的导数当做子弹当前角度使用。具体导数该怎么求你可以选择百度,自学或者可以直接发楼里问我。
还是举二次函数的例子吧。
如果想让弹幕发射出来后以函数y=ax²+bx+c的轨迹前进,那么先求出函数的导数,导数为2ax+b(这个导数的意思是导数随着x的增大而增大)。
然后在子弹内编辑,建立变量x,设置初始值,变化值,然后每次循环子弹的速度变化为一下三种。
第一种是子弹速度不变
self.vx=v*cos(arctan(2ax+b))=v*sqrt(4a²x²+4axb+b²+1)
self.vy=v*sin(arctan(2ax+b))=v*sqrt(4a²x²+4axb+b²+1)/(2ax+b)
其中用了一个公式
cos(a)=sqrt(tan(a)²+1)/1
sin(a)=sqrt(tan(a)²+1)/tan(a)
而sqrt是开平方的意思。
第二种是横坐标位移不变
self.vx=v
self.vy=v*tan(arctan(2ax+b))=v*2ax+b
第三种是纵坐标不变
self.vx=v*cot(arctan(2ax+b))=v/(2ax+b)
self.vy=v
而参数方程也是如此,求出和t相关的导数,然后设置变量建立循环即可。
2018年07月27日 12点07分 6
剩下的部分为坐标轴旋转,明天再说
2018年07月27日 12点07分
@心想眼 这个明天到了大后年也没说
2021年07月02日 15点07分
@心想眼 第二天一看,已经4年了过去了
2022年10月04日 09点10分
level 1
luastg已经有反三角函数了(喜)
2023年10月13日 00点10分 7
1