Skip to content

04. 弹幕

H2Sxxa edited this page Sep 22, 2023 · 10 revisions

弹幕

子实体

注册

子实体使用非常简单,只需要继承、注册就可以直接使用。

回调

弹幕风格

贴图弹幕

这是最为简单的一种弹幕,FormTextured已经为你处理好了大部分逻辑,你只需要传递好贴图路径和注册就行了。

如果你要使用的话FormTextured,你需要实现2个抽象方法,来处理长宽,FormTexturedStatic已经为我们实现了这2个方法,直接使用FormTexturedStatic即可。

public static final Form DEMO = new FormTexturedStatic("demo", 1D, 1D,...);

@SubscribeEvent
public static void onSpellcardRegister(RegistryEvent.Register<Spellcard> event) {
    event.getRegistry().registerAll(DEMO);
}

Danmodel弹幕

相比贴图弹幕,这种弹幕需要你掌握OBJ建模能力,可能需要使用Blender。

我们拥有一个符合Danmodel规范的OBJ后,使用工具直接转化即可得到OBJ

TeamNightClipse似乎没有提供DanModelFromObj的二进制文件,我编译了一份,可以在Release/v1.0.0下找到

安装Java 8后,使用java -jar .\DanModelFromObj-assembly-1.0.jar即可查看用法

基本用法是java -jar .\DanModelFromObj-assembly-1.0.jar -i <OBJ模型路径>

public static final Form DEMO = new FormDanModel("demo",...);

@SubscribeEvent
public static void onSpellcardRegister(RegistryEvent.Register<Spellcard> event) {
    event.getRegistry().registerAll(DEMO);
}

GL弹幕

这是三类弹幕中难度最高,最贴近底层的一种弹幕,你需要继承FormGenric然后通过手动调用GL11/GlStateManager/Tessellator/...来实现你的渲染。

继承后你需要在createRenderer(注意标注SideOnly(Side.CLIENT))返回一个IRenderForm对象,IRenderForm中有些非抽象方法也必须实现,为了减少步骤你可以使用Kekkai的BaseRenderForm

Shader与弹幕

Clone this wiki locally