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

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

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

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

Ответы [ 4 ]

0 голосов
/ 13 апреля 2019
….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 && Input.GetKeyUp(KeyCode.E))
    {
        object.SetActive(false);
        object2.SetActive(true);
    }
}

void OnTriggerExit(Collider other)
{
    object.SetActive(false);
    object2.SetActive(false);
}
...
0 голосов
/ 31 марта 2019

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

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

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

GhostApparition.SetActive(true);
GhostApparition.SetActive(false);
0 голосов
/ 31 марта 2019

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

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 Component.

0 голосов
/ 31 марта 2019

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

gameObjext.SetActive(true); //or false

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

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