croviman 4 Report post Posted January 2 Buenas noches. Tengo un problema que me está volviendo loco: En mi escenario tengo varios game objects que actúan de "trigger" para que cuando el jugador los toque se active un script que reproduzca sonido (por ejemplo) Estos game objects son enormes cubos y debo poner muchos en varios lugares, el sistema funciona bien pero cuando agrando dichos cubos o creo nuevos llega un punto en el que el script al que están asociados se ejecuta de forma automática al iniciar la partida! No se que está pasando ni como puedo solucionarlo! Alguna idea? Desde ya MUCHAS GRACIAS! Share this post Link to post Share on other sites
Igor 336 Report post Posted January 2 sin ver el codigo es un poco dificil saber que ocurre. puede ser que se derecten entre ellos, quizas marcando al player con el "tag" "player" y poniendo en los "triggers" la condicion de que solo se ejecuten si el collider que los ha tocado tiene el "tag" "player"... nose... sin ver el script es lo primero que se me ocurre.... pero podria ser por muchas cosas. (si vas a añadir el script ponlo dandole al simbolo "<>" que hay arriba del cuadro donde se escribe el post) Share this post Link to post Share on other sites
Fabri15544 5 Report post Posted January 2 yo estaba por decir eso mismo puede que se detecten entre ellos es lo mas lógico almenos desde este punto de vista, ya que sin el código no podemos ayudarte de una manera mas técnica solo razonándolo. esto te pude ayudar como dice el compañero ☝️ using System.Collections; using System.Collections.Generic; using UnityEngine; public class Ejemplo : MonoBehaviour { public AudioSource SonidoAusar; // Use this for initialization void OnTriggerEnter(Collider other) //Detecta una colisionar y dispara un condicional. { if (other.gameObject.tag == "Player") //Nombre compare Tag del Jugador { SonidoAusar.Play(); //Sonido a utilizar después de colisionar. } } } Share this post Link to post Share on other sites
lightbug 832 Report post Posted January 2 O se detectan entre ellos o simplemente detectan otros objetos, como dicen arriba seguramente te pase esto ya que (asumo) no los estás filtrando. 1. Si usas tags, es basicamente lo que ya postearon arriba, aunque prefiero usar CompareTag (y no "== string"). if (other.gameObject.CompareTag( "Player" )) SonidoAusar.Play(); 2. Si usas layers debes clasificar a los objetos involucrados, y además habilitar o no las colisiones en la matrix de colisión (Physics Settings). Además, haciendo esto podés reducir los cálculos muchísimo si tuvieras gran cantidad de objetos interactuando entre sí (https://learn.unity.com/tutorial/physics-best-practices#5c7f8528edbc2a002053b5b4) Por ej: Los triggers van en la capa "Trigger" (inventada) el resto va en "Default" y el personaje va en "Player" (inventada). En la matriz de colisión le ponés que "Trigger" considere solo a "Player" (ni a default ni a trigger). Con esto el OnTriggerXXX no necesita filtrar el resultado (como en el caso del tag). Yo prefiero trabajar con capas (en este caso en particular) ya que usando triggers siempre se va a dar que tenés (ponele) 1000 objetos dando vueltas, donde 20 son triggers , 1 es un personaje, y los 979 restantes no aportan nada (dinámicos y/o estáticos). Entonces, para no cargar a las físicas al cuete simplemente los filtras con las capas y la matrix de colisiones. Probablemente en tu caso y en el de muchos esto no sea la gran cosa, pero igual está bien usar este tipo de cosas desde el principio cosa de ir amigandose con este tipo de prácticas. Share this post Link to post Share on other sites
croviman 4 Report post Posted January 3 Mil gracias por las ideas! Voy a intentar implementarlas.... mis conocimientos en el tema de script's son practicamente nulos y el tiempo que le puedo dedicar al proyecto es escaso pero ni bien obtenga algún resultado les estaré avisando. Share this post Link to post Share on other sites
croviman 4 Report post Posted January 4 Anoche estuve tratando de aplicar las soluciónes que me brindaron en mi proyecto y todo funcionó a la perfección. De hecho apliqué lo mismo para otro script que comenzaba a darme problemas y también quedó solucionado. Muchas gracias señores! Pronto subiré algun avance mas prometedor de mi juego así como los concept art que tengo para implementar en el mismo. Share this post Link to post Share on other sites
Fabri15544 5 Report post Posted January 4 me alegro por vos sigue así. 😉 Share this post Link to post Share on other sites