Jump to content
Sign in to follow this  
croviman

Ayuda! Script que se activa solo al iniciar partida

Recommended Posts

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

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

 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

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

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

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
Sign in to follow this  

×
×
  • Create New...