Единство | Взаимодействующий элемент: изменение с подбора при столкновении на подхват при нажатии кнопки - PullRequest
0 голосов
/ 21 июня 2020

Я ОЧЕНЬ новичок в C# и сейчас прохожу обучение по системе инвентаризации. Я вошел в диспетчер ввода, и моя кнопка «E» настроена как «Действие».

В этом руководстве, в конце кода инвентаризации, мы настроили его для получения предмет перед нами, пройдя по нему, и он автоматически помещается в наш инвентарь.

Я пытаюсь изменить его, чтобы поднять, нажав «E» или кнопку «Действие». Возможно ли это? Вот код:

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

1 Ответ

0 голосов
/ 21 июня 2020

Вы можете просто использовать события «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}
}

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...