• 周年纪念勋章活动已圆满结束,如有已购买但仍未申请的用户,可以通过对应勋章的下载链接申请~

问题 Java端爆炸时实体加速度如何计算

fallingCB

【Lv:1】

正式会员
注册
2024/07/31
消息
3
金粒
342金粒
java1.20.1
最近在研究tnt炮之类的机器
wiki上是这么说的:

下文以d
187fc92d24f352ec19025f5648b25e43af9721fa
表示实体到爆炸中心的距离,α
9399e0de6e54cdd384dc6aa8fdd742be116ef488
表示爆炸接触率(见下文),m
3493891975d71218e78b1c65848986a5b417a803
表示所有盔甲的最大爆炸保护魔咒等级。爆炸会对实体造成以下效果:
  • 对于每个距离爆炸中心爆炸伤害半径r=2P
    4ee54da8600091eccb82aa5afbaf59fb8377a09e
    之内的实体,定义爆炸冲击力:F=(1−dr)α
    3615f5b759a318e6cfe00ed6b5696c14c927450a
  • 对实体造成的伤害为⌊7(F2+F)P+1⌋
    4bf1ab945c106dc595a9a26fb7bc71366c9c70a8
  • 计算伤害后,爆炸接触率将减小:α1=(1−0.15m)α
    89e6fe394a02e95fd8eb2808331b6585923f94c6
  • 实体根据更新后的爆炸接触率沿着从爆炸中心到实体眼睛位置的方向被推动(速度加以α1
    d7e015bcad1a522514e3b4b7683d11e14c9f906e
    [需要验证])


  • 在爆炸中心与其100%接触时,实体可获得在单次爆炸(不论爆炸威力)中能获得的最大加速,值为1。

爆炸接触率的计算
  • 实体的边界箱被划分为
    ac8ff287f8befa1d31bf5fc9ecdc8e5fa281b801
    [注 1]的不等距网格中,l、w、h分别表示边界箱的长宽高。
  • 分别从爆炸中心到网格的每个交点画一条射线。
  • 未被固体方块所阻挡的射线占全部的百分比即为爆炸接触率。
近似算法有采样误差,导致推进力的方向不对称。典型的例子是,一个TNT大炮向西时的射程最大,一部分是因为点燃的TNT在这个方向上采样得到的爆炸接触率能达到最大。[需要验证







所以根据爆炸接触率的计算方式,实体和爆炸中心无任何固体方块阻挡时,若m=0,爆炸接触率=100%=1,实体速度加1,与实体和爆炸中心的距离无关。但我实际测试中,在平地用100个tnt炸1米外的弱加载tnt,测量爆炸的坑的距离,1tick后tnt移动了约87.5米;炸2m外的弱加载tnt,移动约75m,和上述我的从wiki得出的结论不符合。

所以是我的推断、测试有什么问题,或者wiki错了吗?
求大佬解释一下或者给一个公式
 

在线管理成员

在线会员

  • daicheng03
  • Fendonacc
  • ZiXin
  • llllapland
  • 清茶菌
  • 柚子i
  • Tighnari
  • qwe503600533
  • 太白
  • 苏热
  • 小小花生
  • 648645654465456
  • Bop1
  • 芝士太好吃了
  • abcd43295
  • s648555685
  • 离川
  • YYT
  • 温暖舒适的熊
  • 卡卡豆
...和 68 更多。
后退
顶部 底部