#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);
}
...