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

附魔了激流的三叉戟能够给玩家多大的加速?

2020-07-26 00:24 作者:eeasee  | 我要投稿
  • 【引子】

        激流 (riptide) 算是原版MC中最帅的附魔之一了,也是后期玩家在三叉戟上用得较多的一种附魔。然后我闲着没事就想看看三叉戟是怎么给玩家加速的……

  • 【太长不看版】

    • 激流Ⅰ -> 30m/s

    • 激流Ⅱ -> 45m/s

    • 激流Ⅲ -> 60m/s

                 P.S.后面还有好玩的内容

  • 【代码部分】

    我们看到 TridentItem类的onStoppedUsing()方法中:

    [ Lnet/minecraft/item/TridentItem;onStoppedUsing(Lnet/minecraft/item/ItemStack;Lnet/minecraft/world/World;Lnet/minecraft/entity/LivingEntity;I)V

    ]


先是获取了玩家手中的激流附魔等级
然后就是一大坨运算了

  float f = playerEntity.yaw;

  float g = playerEntity.pitch;

  float h = -MathHelper.sin(f * 0.017453292F) * MathHelper.cos(g * 0.017453292F);

  float k = -MathHelper.sin(g * 0.017453292F);

  float l = MathHelper.cos(f * 0.017453292F) * MathHelper.cos(g * 0.017453292F);

  float m = MathHelper.sqrt(h * h + k * k + l * l);

  float n = 3.0F * ((1.0F + (float)j) / 4.0F);

  h *= n / m;

  k *= n / m;

  l *= n / m;


最后得到h, l, k 分别是这次加速的x,z,y轴动量。


再给玩家加上动量
以及20gt(一秒钟)的冷却

    值得一提的是,站在地面上的玩家使用激流三叉戟,无论朝哪里,都会被加上个1.2m/gt的向上动量。

    1.2m/gt看似不大,但是作为比较,一次爆炸给玩家造成的最大推力也只不过1.0m/gt。


    最后就是播放音效了:


  • 【得出结论】

    (我感觉这个专栏好水啊233)

    从代码里面可以看到,一次riptide的过程给玩家的加速是一次性的。(区别于烟花火箭的“速度保持”。)

    加速大小 Δv = (附魔等级 + 1) * (3 / 4) [m/gt]

    分别代入一二三级激流附魔,可以得出:

    一级:Δv = 30 m/s

    二级:Δv = 45 m/s

    三级:Δv = 60 m/s

    ……当然还有有些人最关心的2,147,483,647级附魔:

        理论上能给出 1610612736 m/s 的惊天加速(不过MC肯定撑不住233)。

最高上限了吧,再高就错误了

    然而游戏并没有崩溃,而是给出了3838.432这个最大y轴速度。

    至于为啥是这个数字……也许由MC中玩家的移动方式有关。反正我怎么调试客户端服务端穿上脱下鞘翅都不能改变它……

  • 【再说点别的】

        三叉戟要蓄力多久?答案:0.5秒

10gt也就是0.5秒

       当然,使用一次激流之后,玩家需要1.0秒的CD来开始下一次蓄力。

20gt就是1秒

        也就是说三叉戟的周期是1.5秒。

        假设玩家体重是60kg,那么每一次激流Ⅲ加速的动能变化量:

                ΔEv = 0.5 * m * Δv ^ 2

                        = 0.5 * 60 * 60 ^ 2

                        = 108000 (焦耳)

        那么激流Ⅲ的三叉戟的最大功率就是 108000 / 1.5 = 72kw .

        一人一叉,发电不差。

附魔了激流的三叉戟能够给玩家多大的加速?的评论 (共 条)

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