minecraft65536
本帖最后由 minecraft65535 于 2019-1-27 13:55 编辑

我个人觉得音符颗粒的渐变色代码很好(就像下面那样↓)


代码(MC 1.7.10)
  1. net.minecraft.client.particle.EntityNoteFX
复制代码
  1. public EntityNoteFX(World p_i1217_1_, double p_i1217_2_, double p_i1217_4_, double p_i1217_6_, double p_i1217_8_, double p_i1217_10_, double p_i1217_12_, float p_i1217_14_)
  2. {
  3.         super(p_i1217_1_, p_i1217_2_, p_i1217_4_, p_i1217_6_, 0.0D, 0.0D, 0.0D);
  4.         this.motionX *= 0.009999999776482582D;
  5.         this.motionY *= 0.009999999776482582D;
  6.         this.motionZ *= 0.009999999776482582D;
  7.         this.motionY += 0.2D;
  8.         this.particleRed = MathHelper.sin(((float)p_i1217_8_ + 0.0F) * (float)Math.PI * 2.0F) * 0.65F + 0.35F;
  9.         this.particleGreen = MathHelper.sin(((float)p_i1217_8_ + 0.33333334F) * (float)Math.PI * 2.0F) * 0.65F + 0.35F;
  10.         this.particleBlue = MathHelper.sin(((float)p_i1217_8_ + 0.6666667F) * (float)Math.PI * 2.0F) * 0.65F + 0.35F;
  11.         this.particleScale *= 0.75F;
  12.         this.particleScale *= p_i1217_14_;
  13.         this.noteParticleScale = this.particleScale;
  14.         this.particleMaxAge = 6;
  15.         this.noClip = false;
  16. }
复制代码
注意8~10行那个渐变色代码
绿三个颜色的值全都是由音高(p_i1217_8_)决定的,转换成公式为:
红= sin(x)*2π*0.65+0.35
绿= sin(x+1/3)*2π*0.65+0.35
蓝= sin(x+2/3)*2π*0.65+0.35
更直观地看(函数波形):



你们觉得MC中哪部分的代码写的很好呢?欢迎讨论~

虎水小骥
哇!这个代码真的不错诶!学习了~

不过……我还没有刻意看过mc的代码……

Abraham511


~~~


minecraft65536
Abraham511 发表于 2019-1-27 13:52
羡慕会代码的大佬们~~~

你的那个彩色字可以考虑用这个算法

下一页 最后一页