首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >拿起武器装备,如果武器达到极限,就替换我们的武器

拿起武器装备,如果武器达到极限,就替换我们的武器
EN

Stack Overflow用户
提问于 2022-05-15 15:57:03
回答 2查看 47关注 0票数 1

我有一个武器切换系统,非常简单,我有一个武器清单,我可以使用我的滚动轮循环它们。

代码语言:javascript
运行
复制
    int previousSelectedWeapon = selectedWeapon;

    if(Input.GetAxis("Mouse ScrollWheel") > 0f)
    {
        if(selectedWeapon - 1 >= 0)
        {
            selectedWeapon--;
        }
        else
        {
            selectedWeapon = maxWeapons;
        }
    }

    if(Input.GetAxis("Mouse ScrollWheel") < 0f)
    {
        if(selectedWeapon + 1 <= maxWeapons)
        {
            selectedWeapon++;
        }
        else
        {
            selectedWeapon = 0;
        }
    }

    if(previousSelectedWeapon != selectedWeapon)
    {
        SelectWeapon();
    }
}

public void SelectWeapon()
{
    int i = 0;

    foreach (Transform weapon in transform)
    {
        if (i ==  selectedWeapon)
        {
            weapon.gameObject.SetActive(true);
        }
        else
        {
            weapon.gameObject.SetActive(false);
        }
        i++;
    }
}

然而,这并不完全是我想要的,我希望能够有一个最大的x武器目前装备,我只能循环通过他们。

假设我有1件武器,我可以拿起另一件武器,但如果我装备了最大数量的武器,我希望我目前选择的武器被我要捡到的武器替换

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-05-16 03:40:11

为了解决这个问题,我完全修正了这个代码。只将内容放入类中的代码中。底层系统的工作方式类似于在GTA中切换武器。如果希望锁定列表旋转,请再次留下注释。

代码语言:javascript
运行
复制
public class WeaponSelect : MonoBehaviour
{
    [SerializeField]
    private int selectedWeapon = 0;
    private void Update()
    {
        var deltaY = Input.GetAxisRaw("Mouse ScrollWheel");

        if (deltaY == 0) return;

        if (deltaY > 0) selectedWeapon = ++selectedWeapon % transform.childCount;

        if (deltaY < 0) selectedWeapon = selectedWeapon == 0 ? transform.childCount-1 : --selectedWeapon;

        SelectWeapon(selectedWeapon);
    }

    public void SelectWeapon(int index)
    {
        foreach (Transform weapon in transform) weapon.gameObject.SetActive(false);

        transform.GetChild(index).gameObject.SetActive(true);
    }
}
票数 1
EN

Stack Overflow用户

发布于 2022-05-15 16:06:57

如果是列表,则只将maxWeapon更改为weapon.Count,如果是数组,则更改为weapon.Length;向列表添加新的武器,并将其设置为list的最后一个元素?

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72249908

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档