咕咕咕了好久,我又来搬裙子旧教程了。
甚至我们可以做到双用途药水:
核心函数
public override bool AltFunctionUse(Player player) { return true; }
如果为这个函数返回值为true
那么就能右键使用,而当你按下右键的时候TR就会把 player.altFunctionUse
这个属性设置为2,也就是右键。我们之后只需要判断这个属性的值就知道玩家是否用右键使用武器。
右键不同效果
如果想让武器右键有不同的效果,我推荐在 CanUseItem
重写函数里面使用。
// 一定要用CanUseItem,保证在物品被使用之前修改属性 public override bool CanUseItem(Player player) { if (player.altFunctionUse == 2) { item.shoot = mod.ProjectileType("ChasePro"); item.shootSpeed = 5f; // 右键不使用弹药 item.useAmmo = AmmoID.None; item.useTime = 40; item.useAnimation = 40; } else { item.shoot = mod.ProjectileType("ExplodingBullet"); item.shootSpeed = 5f; item.useAmmo = AmmoID.Bullet; item.useTime = 4; item.useAnimation = 4; } return true; }
这里有一些细节需要注意,首先就是把所有要修改的属性都要写上,否则就会出现右键以后左键功能还原不了的情况(还是右键的功能)。所以这个状态还原十分重要。
右键蓄力
(这是我塞的私货)
泰拉瑞亚有一个很灵性的玩意,那就是 player.channel
不支持右键使用。
那我们是不是可以放弃右键左键都可以做蓄力武器的存在了?当然不可能。
目前来说,我们有一个最简单的方法,那就是用 player.controlUseTile
判右键的持续使用。
目前我没找到什么原因导致的 player.controlUseTile
在长按右键的时候会一直为true,所以暂时用着吧,等有更好的办法再说(
练习
基础
- 如何实现玩家可以自动重复使用右键?答案
ItemID.Sets.ItemsThatAllowRepeatedRightClick[Type] = true; // 放入 SetStaticDefaults 重写函数
写物品感觉不如写手持弹幕里,然后物品就setdef和setstaticdef就完事了(x
草,真实的手持弹幕比物品好用