跳至正文

双用途武器

咕咕了好久,我又来搬裙子旧教程了。

这是双用途武器的一种,左键消耗弹药发射子弹,右键不消耗弹药发射跟踪弹

甚至我们可以做到双用途药水:

核心函数

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,所以暂时用着吧,等有更好的办法再说(

练习

基础

  1. 如何实现玩家可以自动重复使用右键?答案
    ItemID.Sets.ItemsThatAllowRepeatedRightClick[Type] = true; // 放入 SetStaticDefaults 重写函数
    

《双用途武器》有2个想法

发表回复