Как создать программу, которая заставляла бы объект появляться и исчезать путем ввода и выхода из триггера?

#c# #unity3d

#c# #unity3d

Вопрос:

Мне нужен код, чтобы объект появлялся при входе в триггерный объект и исчезал при выходе из триггерного объекта.

 GameObject GhostApparition;
    // Use this for initialization
    void OnTriggerEnter (Collider other)
    {
        if (other.CompareTag("Player")) ;
        {
            //????
        }
    }
  

Я хочу, чтобы объект появлялся при входе в объект триггера и исчезал при выходе из объекта. Также должна исчезнуть и сама сетка.

Комментарии:

1. Что вы уже пробовали? Вы знаете, как настроить GameObjects на активность или нет? Похоже, у вас уже есть подходящий участник для этого. Итак, где именно вы застряли?

Ответ №1:

Вы можете управлять состоянием игрового объекта с помощью

  gameObject.SetActive(true);
 gameObject.SetActive(false);
  

Вам просто нужно вызвать его в вашем TriggerEnter и TriggerExit. Я не знаю, хотите ли вы сделать свой «ghostapparition» неактивным, но тогда это:

 GhostApparition.SetActive(true);
GhostApparition.SetActive(false);
  

Ответ №2:

Чтобы решить эту проблему, просто сделайте это:

 GameObject GhostApparition;
    // Use this for initialization
    void OnTriggerEnter (Collider other)
    {
        if (other.tag == "Player") ;
        {
             GhostApparition.SetActive(true);
        }
    }

    void OnTriggerExit (Collider other)
    {
        if (other.tag == "Player") ;
        {
             GhostApparition.SetActive(false);
        }
    }
  

Но будьте внимательны, когда вы делаете это с GameObjects, который содержит поведения. Если вы деактивируете его, а затем активируете снова, он снова запустит void Start и сбросит ваши переменные. Иногда вам это не понадобится.

Поэтому я предлагаю в эти моменты просто деактивировать компонент GameObject MeshRenderer.

Ответ №3:

Вы могли бы активировать / деактивировать игровой объект, вот так:

 gameObjext.SetActive(true); //or false
  

При активации / деактивации все подключенные компоненты также будут включены / отключены, документ.

Ответ №4:

 ….monobehavior:

public GameObject object;

void Start()
{
    object.SetActive(false);
    object2.SetActive(false);
}

void OnTriggerEnter(Collider other)
{
    if (other.gameObject.tag == "Player")
    {
        {
           object.SetActive(true);
           object2.SetActive(false);
        }
    }
}

/// void OnTriggerStay and 'object2' are extras (for if u want a keycode to show an additional text)
void OnTriggerStay(Collider other)
{
    if (object.activeInHierarchy amp;amp; Input.GetKeyUp(KeyCode.E))
    {
        object.SetActive(false);
        object2.SetActive(true);
    }
}

void OnTriggerExit(Collider other)
{
    object.SetActive(false);
    object2.SetActive(false);
}
...