本帖最后由 fallingCB 于 2024-7-31 18:35 编辑
java1.20.1 最近在研究tnt炮之类的机器 wiki上是这么说的: 下文以d  表示实体到爆炸中心的距离,α  表示爆炸接触率(见 下文),m  表示所有盔甲的最大 爆炸保护魔咒等级。爆炸会对实体造成以下效果: - 对于每个距离爆炸中心爆炸伤害半径r=2P
之内的实体,定义爆炸冲击力:F=(1−dr)α 。 - 对实体造成的伤害为⌊7(F2+F)P+1⌋
。 - 计算伤害后,爆炸接触率将减小:α1=(1−0.15m)α
。 - 实体根据更新后的爆炸接触率沿着从爆炸中心到实体眼睛位置的方向被推动(速度加以α1
[需要验证])
- 在爆炸中心与其100%接触时,实体可获得在单次爆炸(不论爆炸威力)中能获得的最大加速,值为1。
爆炸接触率的计算- 实体的边界箱被划分为
[注 1]的不等距网格中,l、w、h分别表示边界箱的长宽高。 - 分别从爆炸中心到网格的每个交点画一条射线。
- 未被固体方块所阻挡的射线占全部的百分比即为爆炸接触率。
近似算法有采样误差,导致推进力的方向不对称。典型的例子是,一个TNT大炮向西时的射程最大,一部分是因为点燃的TNT在这个方向上采样得到的 爆炸接触率能达到最大。[ 需要验证
所以根据爆炸接触率的计算方式,实体和爆炸中心无任何固体方块阻挡时,若m=0,爆炸接触率=100%=1,实体速度加1,与实体和爆炸中心的距离无关。但我实际测试中,在平地用100个tnt炸1米外的弱加载tnt,测量爆炸的坑的距离,1tick后tnt移动了约87.5米;炸2m外的弱加载tnt,移动约75m,和上述我的从wiki得出的结论不符合。
所以是我的推断、测试有什么问题,或者wiki错了吗? 求大佬解释一下或者给一个公式
|