粒子
第一个粒子
最近有了些想法,于是乎,重新开始了模组开发的学习。
本文主要用于记录开发过程的问题,留下学习的记录。
参考forgegemwire1.20.1
参考boson1.16.5
与以上不同的是,这里将更大篇幅的记录粒子开发
而不是浅尝辄止,并且会解释的更加详细
在实操了1.16.5和1.20.1的粒子系统后
我发现粒子系统的改变并不大
1.16.5和1.20.1之间几乎只有一些名称的变化
下面的开发版本为1.20.1
生成粒子的方式
-
关于两端(客户端/服务端)
首先你要知道粒子只在客户端显示
但这并不意味着服务器与粒子的生成毫无关系
如果你要在多人服务器中实现一些复杂的自定义时,有些数据只能从服务器获得
比如伤害事件,只在服务端触发,这就需要数据同步或者在服务端使用SendParticles -
生成粒子的方法
服务端server
serverLevel.SendParticles
客户端client
clientLevel.addParticle
Minecraft.getInstance().particleEngine.add(particle);
在后面会再详细的说明这两种方法的区别 -
关于逻辑刻和渲染刻
逻辑刻在mc中是每秒20tick,若电脑性能较差也会有所降低
但渲染刻则根据电脑性能不同有所区别,一般都会高于逻辑刻的频率
要注意你影响粒子生成的是哪种刻,下面会有一个例子
TestParticle–粒子类
这里我们继承的是原版中的DustColorTransitionParticle类
-
为什么要继承这个类?
并没有什么特别的,只要继承了TextureSheetParticle(1.20.1)/SpriteTexturedParticle(1.16.5)类即可使用自定义材质
你也可以直接继承TextureSheetParticle
主要的区别是DustColorTransitionParticle已经设置了粒子的最大生命、运动轨迹等等
我们直接继承灰尘的表现形式 -
粒子需不需要注册?
粒子需要注册,但不是像Item或者Block一样去注册Particle
而是注册ParticleType,或者你可以把ParticleType理解成Item、Block
一个粒子类型还需要注册一个Provider(1.20.1)/Factory(1.16.5)(这两者并没有什么区别)
Provider类一般直接写在你的Particle类里做内部类
public class TestParticle extends DustColorTransitionParticle {
//这两个成员变量来至父类,可以实现颜色的转变
private final Vector3f fromColor;
private final Vector3f toColor;
protected TestParticle(ClientLevel p_172053_, double p_172054_, double p_172055_, double p_172056_, double p_172057_, double p_172058_, double p_172059_, TestOption p_172060_, SpriteSet p_172061_) {
super(p_172053_, p_172054_, p_172055_, p_172056_, p_172057_, p_172058_, p_172059_, p_172060_, p_172061_);
float f = this.random.nextFloat() * 0.4F + 0.6F;
this.fromColor = this.randomizeColor(p_172060_.getFromColor(), f);
this.toColor = this.randomizeColor(p_172060_.getToColor(), f);
}
//根据TestOptition的xyz的速度更改颜色
private Vector3f randomizeColor(Vector3f p_254318_, float p_254472_) {
return new Vector3f(this.randomizeColor(p_254318_.x(), p_254472_), this.randomizeColor(p_254318_.y(), p_254472_), this.randomizeColor(p_254318_.z(), p_254472_));
}
//根据粒子age、TestOption速度获取颜色
private void lerpColors(float p_172070_) {
float f = ((float)this.age + p_172070_)

最低0.47元/天 解锁文章
248

被折叠的 条评论
为什么被折叠?



