談?wù)凪C戰(zhàn)斗(二)
我在理想境里召喚了一個(gè)“永生者”,也就是鉆石套的僵尸,移速和普通僵尸一樣是0.23格每刻,或者說(shuō)4.6米每秒。
接著,我寫了這樣一個(gè)“打點(diǎn)計(jì)時(shí)器”道具:
使用此道具與目標(biāo)實(shí)體交互,則會(huì)給目標(biāo)實(shí)體設(shè)置“dist_measure”nbt的布爾值;如果是假就改成真,是真就改成假。
此道具在背包的時(shí)候,每一幀會(huì)在后臺(tái)線程打印附近每個(gè)該布爾值為真的生物與本玩家的距離。
代碼如下,不感興趣的忽略就行。
這樣我就能知道特定一個(gè)生物,每個(gè)tick與玩家的距離是多少了。雖然從代碼的角度也能推演,但我更希望從實(shí)戰(zhàn)的角度去測(cè)試,不希望空中樓閣的推演出差池。代碼的話涉及的模塊過(guò)多,需要同時(shí)看擊退、AI和實(shí)體自帶的更新邏輯,我打算先從物理實(shí)驗(yàn)的方式研究一番,再去從代碼分析。
我站在原地不動(dòng),僵尸朝我過(guò)來(lái),我就拿一把石劍去打他,他過(guò)來(lái)我就打他。很快,測(cè)量數(shù)值就出來(lái)了。

只需要扔進(jìn)vscode,按住alt就可以把右面的那一列復(fù)制進(jìn)excel了。

我不太清楚為何移動(dòng)速度屬性為0.23的怪物,在朝我沖過(guò)來(lái)的時(shí)候,每刻的移速是0.114左右,也就是理論值的一半。我使用了普通僵尸做同樣的實(shí)驗(yàn),結(jié)果仍然是0.114的沖鋒速度,所以并不是我自己寫的永生者出了問(wèn)題。
可以看到,這個(gè)速度的變化并不是單調(diào)的,而且很奇怪。他的第一幀被擊退后迅速衰減,之后進(jìn)入一段比較平滑的衰減期,接下來(lái)劇烈衰減并反彈一幀,然后怪物開始逐漸加速靠近玩家。這里有一個(gè)奇怪的拐點(diǎn),每一輪實(shí)驗(yàn)都是如此。
到底哪里是怪物在空中的最高點(diǎn),哪里是怪物落地點(diǎn)?下一輪測(cè)試我改進(jìn)一下打點(diǎn)計(jì)時(shí)器。