ItemTime
在ItemTime为0但itemAnimation没到0时,会一直运行物品的逻辑,大多数的物品都会判断player.itemTime = = 0 然后设置 player.itemTime = player.useTime
这就是为什么有些武器挥舞的很慢,但是弹幕出的很多的原因
ItemAnimation
ItemAnimation与 player.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.useTime和Item.useAnimation。tModLoader提供了钩子来帮助调整使用使用时间和动画时间。对于需要动态调整的效果,应该使用已经提供的钩子来更改,这样兼容性是最高的。
方法
| ModPlayer|ModItem|GlobalItem | UseTimeMultiplier | 更改Item的useTime |
|---|---|---|
| ModPlayer|ModItem|GlobalItem | UseAnimationMultiplier | 更改Item的useAnimation |
| ModPlayer | GetAttackSpeed | 更改攻击速度 是个乘数,+0.15f等于 增加15% 比如修改远程攻击速度 |
| static DamageClass | MeleeNoSpeed | 攻速对于其没有影响 |