Unity实现按键拾取物品

本来是想通过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;
        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("玩家已捡起");
            }
        }
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值