tModLoader 玩家物品使用时间

ItemTime


​ 在ItemTime为0但itemAnimation没到0时,会一直运行物品的逻辑,大多数的物品都会判断player.itemTime = = 0 然后设置 player.itemTime = player.useTime

​ 这就是为什么有些武器挥舞的很慢,但是弹幕出的很多的原因

ItemAnimation


ItemAnimationplayer.itemAnimationMax 结合使用,用于确定玩家在使用动画时的进度。

​ 所有物品的使用都会判断play.itemAnimation > 0 因为他决定物品是否正在被使用

注意 :

  • 如果 useTime 等于 useAnimation 没有任何问题
  • 如果 useTime 小于 useAnimation 那么在一次动画中,武器会使用多次
  • 如果 useTime 大于 useAnimation 那么武器动画已经完成了,但是你还是无法切换武器 除非useTime 为0

reuseDelay


​ 这个东西的作用是强迫玩家在使用物品后等待指定的时间才能再次使用, 设置Item.reuseDelay

​ 如果物品是Item.melee(近战),Item.createTile > 0 Item.createWall > 0 免疫这个东西

对于Player的一些控制方法


ItemAnimationJustStarted 玩家动画是否处于第一帧
ItemTimeIsZero 使用时间是否为0
ItemAnimationActive 使用动画是否正在进行
ItemAnimationEndingOrEnded 使用动画是否结束
ItemUsesThisAnimation 动画使用多少次了(物品被使用了多少次)

Item

attackSpeedOnlyAffectsWeaponAnimation 攻击速度是否只影响武器的挥舞速度(动画速度)
shootsEveryUse 每次动画开始都会发射弹幕,而不是UseTime
useLimitPerAnimation 每次使用 生效的次数(运行多少次物品逻辑)
consumeAmmoOnFirstShotOnly 每次使用的开始 消耗一枚弹药(喷火器)
consumeAmmoOnLastShotOnly 每次使用的结束 消耗一枚弹药(发条突击步枪)
channel 当左键(攻击)被按住时可以有特殊的行为
通常用来制作手持弹幕
同时player的channel会为true

调整使用速度和动画速度


​ 切记不要动态修改Item.useTimeItem.useAnimation。tModLoader提供了钩子来帮助调整使用使用时间动画时间。对于需要动态调整的效果,应该使用已经提供的钩子来更改,这样兼容性是最高的。

方法

ModPlayer|ModItem|GlobalItem UseTimeMultiplier 更改Item的useTime
ModPlayer|ModItem|GlobalItem UseAnimationMultiplier 更改Item的useAnimation
ModPlayer GetAttackSpeed 更改攻击速度 是个乘数,+0.15f等于 增加15%
比如修改远程攻击速度
static DamageClass MeleeNoSpeed 攻速对于其没有影响
使用 Hugo 构建
主题 StackJimmy 设计