Unity实现按键拾取物品

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

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

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

bool CanBePick = false;

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

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

    private void Update()
    {
        if (CanBePick)
        {
            if (Input.GetKeyDown(KeyCode.K))
            {
                AddNewItem();
                Destroy(gameObject);
                Debug.Log("玩家已捡起");
            }
        }
    }

猜你喜欢

转载自blog.csdn.net/qianhang120/article/details/125828893