团结 |可交互物品:从碰撞时拾取更改为按下按钮时拾取



我对 C# 非常陌生,正在浏览有关库存系统的教程。我已经进入了输入管理器,并将"E"按钮设置为"操作"。

在本教程中,在库存代码的末尾,我们将其设置为通过走过它来拾取我们面前的物品,它会自动放入我们的库存中。

我正在尝试通过按"E"或我的操作按钮来更改它以接听。这可行吗?这是代码:

private void OnTriggerEnter(Collider col)
{
if (col.GetComponent<Item>())
AddItem(col.GetComponent<Item>());
}

您可以做的一件简单的事情是同时使用"OnTriggerEnter"和"OnTriggerExit"事件来设置和取消设置实例变量。然后你可以检查更新方法中的输入和变量,如下所示

public class Player:MonoBehaviour{
Item itemInContact;
// Update is called once per frame
void Update()
{ 
// If you can stand over several items iterate the list and add them all
if (Input.GetKeyDown(KeyCode.E) && itemInContact != null)
AddItem(itemInContact);
}
private void OnTriggerEnter(Collider col)
{
// If you can stand over several items you can use a list and push all the items
if (col.GetComponent<Item>())
itemInContact = col.GetComponent<Item>();
}
private void OnTriggerExit(Collider col)
{
// If you can stand over several items you should flush the list here
itemInContact = null;
}
private void AddItem() { // Your addItemCode}
}

我希望这有帮助!

最新更新