redstone_machine...吧 关注:3,605贴子:60,849
  • 1回复贴,共1

【水】mc中实体自由落体机制

只看楼主收藏回复

受到nenn大触的委托,我收集了源码中部分下落运动的参数,顺便也来科普一下mc中实体下落的运算机制。帖子基于对1.8版本源码的研究,也同样适用于1.8.x版本。
拖坑拖了这么久,估计不少人都已经看过nenn触的论文了,所以。。就当我是来水贴吧的QwQ


IP属地:陕西1楼2016-01-15 16:13回复
    表格中,实体名称的缩进代表了实体的父子关系。小括号中代表了不同的情况,比如在空中,在水中或是在岩浆中。冒号并列了几种不同情况下的数据,而中括号则代表一种实体遵从其父实体的数据。比如表格中守卫者(Guardian)在水中时有其独立的数据,其他情况及在空中和在岩浆中时数据与LivingBase相同。
    表格中未出现的实体均遵从其父实体的数据。如雪球、鸡蛋等可投掷实体数据遵从Throwable,恶魂与烈焰人的火球等遵从Fireball,恶魂遵从Flying,其他僵尸、苦力怕等生物则遵从Living。
    根据实体自由落体的计算顺序,大致可以分为两类。由于只考虑实体的自由落体运动,忽略其他额外因素,我们可以不将计算循环的分界点定在每gt的分界点,而定在位移的计算处。这样,我们可以按余下两种运算的先后顺序,考虑每种实体的运动。
    加速度先于阻尼
    每次循环中,对于速度的计算为(speed – gravity)* damping。此类实体自由落体运动的路程/时间函数的表达式是相同的。
    阻尼先于加速度
    每次循环中对于速度的计算为speed * damping – gravity。这类实体运动的函数表达式也是相同的。
    对于同一类实体的不同计算顺序,表达式的不同只是时间多1gt或者少1gt而已。
    至于实体自由落体函数的推导,参见nenn触论文:
    http://www.rmcteam.org/gravity-theory.html


    IP属地:陕西3楼2016-01-15 16:15
    回复