- Home /
How do I make all game objects with a certain tag appear on trigger enter? (C#)
I'm a new Unity user.
To make my scene perform better, I have switched the mesh renderer off for objects that don't necessarily need to be seen.
However, when the player enters a collider, I want those objects (assigned the tag "Appear") to have their meshes rendered so that they may become visible.
using UnityEngine;
using System.Collections;
public class RenderTrig : MonoBehaviour {
void OnTriggerEnter(Collider other) {
GameObject Appear = GameObject.Find("Appear");
(Appear).GetComponent<MeshRenderer>().enabled=true;
}
}
I tried to create what I thought would do the trick, called the script RenderTrig, and placed it on my collider, which I named TRIGGIFER. I know, however, that I'm doing something fatally wrong, but I don't know where my mistake lies. What do I need to do?
Thanks for your help in advance!
If you have other dynamic gameobjects in your game that might spring this trigger, you should put an "If(other.tag == "Player") in your OnTriggerEnter to ensure that "other" is indeed the player, what if it's a random chicken clucking by or anything.
Also add a debug line immediately after OnTriggerEnter like 'Debug.Log("Trigger sprung by: " + other.name); so you can ensure you are getting the trigger event you need.
Please do not post a comment or follow-up as an Answer. I converted that one for you but normally I just reject out of the mod queue cuz otherwise mods would do nothing but convert all day long.
Anyway, to your question - I suspect the little snippets I posted would be language agnostic but my intent was C# as that's what I use.
Assu$$anonymous$$g your trigger does work.
You should be using this : FindGameObjectsWithTag
Answer by erfan · Sep 05, 2015 at 07:52 AM
You told that "Tag" not "Name". \n;
GameObject.Find("GameObjectName");
Will Find An Object That It's name is "GameObjectName" You can use this.
GameObject.FindGameObjectWithTag("MyTag");
Answer by jmsearing · Sep 09, 2015 at 12:43 PM
Get an array of all objects with the tag "Appear". For each item in the array, set the mesh renderer to enabled = true.
public class NameOfYourTriggersClass : MonoBehaviour {
public GameObject[] visibleList;
void OnTriggerEnter(Collider other) {
//here's the script you need to create an array of gameobjects with tag: Appear
if (visibleList == null) {
visibleList = GameObject.FindGameObjectsWithTag("Appear");
}
//set each object's Mesh Rendere to enabled that appears in the list
foreach (GameObject visible in visibleList) {
visible.GetComponent<MeshRenderer>().enabled=true;
}
}
Haven't tested that but it should work as long as the trigger is actually triggering. Might get some errors or warning for not using the Collider of the triggering object.