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

【Terraria机制】传送枪子弹的射速

2019-01-08 02:15 作者:putianyi888  | 我要投稿

今天电路群内在讨论传送枪子弹的射速。很久以前白霜心做过测试,每秒348格。最近我做过的测试显示第一帧5格。显然传送枪子弹每帧前进的距离是小数格,所以348这个数据也不一定准。通过查看源码,连蒙带猜,大致搞清楚了传送枪子弹的精确射速。

结论:传送枪子弹射速是93像素/帧

首先是实验值。348格折合348*16=5568像素。5568附近的5580是60的倍数,因此猜测子弹实际前进了5580像素,速度折合93像素/帧。

然后是源码查询过程。

在 ItemID.cs 里查找“portal”可以找到传送枪的id是3384。

在 Item.cs 里查找“3384”可以找到传送枪的属性,可以看到传送枪子弹的id是600。

在 Projectile.cs 里查找“600”可以查到传送枪子弹生成过程,通过38282、38283、38285、38288行可以知道传送枪子弹的id是601,射速是3。

在 Projectile.cs 里查找“601”可以看到传送枪子弹的属性。其中有一个“extraUpdates”属性比较特殊,大多数射弹都没有。同时可以看到子弹的碰撞箱是10*10。

在 Projectile.cs 里查找“update”可以看到关键的刷新函数(射弹刷新的基本概念可以参考CV1815655

可以看出来,每帧中一个射弹刷新次数是 extraUpdates+1,所以传送枪子弹每帧刷新31次,每次前进3像素,每帧总共前进93像素,与实验值吻合。游戏设置额外刷新次数是为了避免射弹速度过快错过关键的碰撞。93这个奇怪的数值来源于射弹速度3和额外刷新次数30两个设定,可能没有实际的原因,只是程序员随便搞的。

【Terraria机制】传送枪子弹的射速的评论 (共 条)

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