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

LuaSTG:激光连线与乙姬非符

2022-12-19 17:03 作者:X的镜像  | 我要投稿

    注意:该文章仅为提供本人思路,实现手法多多少少有些暴力,如果有更好的写法欢迎在评论区进行分享。

    在看一些视频的时候大家或许会注意到下面这些美丽的弹幕,但是在LuaSTG尝试的时候却不知道从何处下手。下面两个例子中,菱形是由点弹和激光构成的整体,传送带是由齿轮和链条构成的整体,但是怎样用“整体”的方法来制作这些弹幕呢。

东方灵守祀二面关底一符
东方海惠堂ex一非

    打开LuaSTG,我们新建了一个“整体”obj和用于连线的点和激光,在这个例子中我们将会用“整体”obj来控制点和激光的生成。自然我们很轻松的就做出了雏形。(其中激光的两个变量“obj1”和"obj2"的意思是激光的两个端点)

    下面我们会用到一点lua里面关于表的知识。众所周知Luastg里面所有的对象都是obj,编辑器中也提供给obj一些默认的“属性”,比如self.bound为obj是否会出屏即消。事实上在LuaSTG中,"self"为obj本身自带的一个表,而诸如bound这些则是表里的元素,除了obj默认有的元素之外,我们也可以自己新建一些元素例如self.orz = true,在lua语言中,表里可以放任何东西,比如说一个obj。

    很快我们便写出了下面的东西

    这里我们给“整体”obj新建了两个元素self.no1和self.no2,用于储存激光的两个端点,last的意思为将两个端点子弹储存到self.no1和self.no2中,之后创造激光时我们就可以用self.no1和self.no2来给激光的两个变量obj1与obj2赋值(只不过这个“值”并不是大家想的那种变量,而是一个弹幕,lua好神奇啊……)。

    整体和端点这部分是写好了,然后我们开始写激光部分。我们让激光的头在第一点上,角度指向第二点,长度为两点间的距离,为了保证连线时端点存在我们使用IsValid来判断。

    这里的obj1和obj2是具体的两颗弹幕,所以可以直接用Angle和Dist这两个函数;也可以用弹幕里自带的参数,比如弹幕自带的x,y坐标属性self.x和self.y,我们这里用obj1指代这个弹幕就可以写obj1.x和obj1.y。

连线激光的初始属性

    这样一个基础的连线激光就写好了,我们在boss的位置生成一个“整体”obj试试看

例一(激光扫射)

    虽然很朴素不过连线激光的事我们完美解决了。

    这里的“整体”obj只是一种写法,具体情况需要灵活运用,让我们再写几个例子。(为了方便表现原理所以没有对弹幕进行润色)

例二(发射菱形)
激光写法与例一相同
例三(链条)

        教程就到这里了,希望能帮到大家。

LuaSTG:激光连线与乙姬非符的评论 (共 条)

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