Unity实现按键拾取物品

时间:2025-04-01 09:00:40

本来是想通过OnTriggerStay来检测玩家与物品的碰撞,如果一直处于碰撞中,且按下了K键,那么就能拾取。

但是用这种方法总会有某种延迟的问题(可能是跟碰撞检测频率有关),导致我按多次K键才有可能捡起物品。

--2024.6.4 更新: 2022.2版本的Unity中,2d刚体组件中有一个sleeping mode,用于在对象处于静止时暂时将其从物理模拟中移除。不确定这里OnTriggerStay是否与此有关

所以换一种思路,开始碰撞时将某bool值设为true,结束碰撞时设为false。然后在Update中检测bool值和按键,拾取物品。

bool CanBePick = false;

    private void OnTriggerEnter(Collider other)
    {
        CanBePick = true;
        ("玩家与装备开始碰撞");
    }

    private void OnTriggerExit(Collider other)
    {
        CanBePick = false;
        ("玩家与装备脱离碰撞");
    }

    private void Update()
    {
        if (CanBePick)
        {
            if (())
            {
                AddNewItem();
                Destroy(gameObject);
                ("玩家已捡起");
            }
        }
    }