gameObject активируется без столкновений. Как отключить активацию gameObject при запуске сцены? - PullRequest
0 голосов
/ 10 апреля 2020

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

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class reveal : MonoBehaviour
{

public GameObject Stand;

/// <summary>
/// OnTriggerEnter is called when the Collider other enters the trigger.
/// </summary>
/// <param name="other">The other Collider involved in this collision.</param>
void OnTriggerEnter(Collider other)
{
    Stand.SetActive(true);
}

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


}

Чтобы исправить это, я изменил скрипт, чтобы деактивировать gameObject до запуска сцены и здесь проблема в том, что взаимодействие триггер / коллайдер больше не работает. Я думаю, что фрагмент кода, который я добавил, просто деактивировал объекты навсегда.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class reveal : MonoBehaviour
{
public GameObject Stand;
// Start is called before the first frame update
void Start()
{
    Stand = GameObject.Find("Stand");
    Stand.gameObject.SetActive(false);

}

//public GameObject Confrontation;

/// <summary>
/// OnTriggerEnter is called when the Collider other enters the trigger.
/// </summary>
/// <param name="other">The other Collider involved in this collision.</param>
void OnTriggerEnter(Collider other)
{
    Stand.SetActive(true);
}
void OnTriggerExit(Collider other)
{
    Stand.SetActive(false);
}
}

Как правильно реализовать это ?? Любые идеи?

1 Ответ

0 голосов
/ 11 апреля 2020

Чтобы по-прежнему использовать ваш сценарий, вы можете создать еще один пустой игровой объект и добавить сценарий того, что этот объект вместо непосредственно на объект, который вы отключаете.

Я не уверен, что полностью понимаю Ваш вопрос, хотите ли вы просто скрыть игровой объект, чтобы вы его не видели, но при этом могли взаимодействовать с коллайдером. вместо этого вы могли бы сделать это

 void OnTriggerEnter(Collider other)
    {
        Stand.GetComponent<MeshRenderer>().enabled = true;
    }
    void OnTriggerExit(Collider other)
    {
        Stand.GetComponent<MeshRenderer>().enabled = false;   
}

 }
...