Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - MisterioElGatoConSuerte

#1
General (Antiguo) / Estructura de subtitulo y audio.
Enero 31, 2018, 04:08:34 AM
Hola este problema que tuviste me animo a hacer un script en base al que tu hiciste, no se si sea mas cómodo pero aquí esta xP
 

using UnityEngine;
using System.Collections;
using UnityEngine.UI;
public class SubTitulos : MonoBehaviour{
public string[] subtitulos;
public AudioClip[] audio;
public float[] tiempo; // Tiempo para iniciar cada dialogo.
public int contador;
public Text cuadroTexto;
public AudioSource voz;
public void Iniciar (){
   contador = 0;
   StartCoroutine (Subtitulo());
}
public void Parar (){
   StopAllCoroutines ();
}
public void Retornar (){
   StartCoroutine (Subtitulo());
}
IEnumerator Subtitulo (){
   yield return new WaitForSeconds (tiempo[contador]);
   cuadroTexto.text = subtitulos [contador];
   voz.clip = audio [contador];
   voz.Play ();
   yield return new WaitForSeconds (voz.clip.length);
   contador += 1;
   if(contador >= subtitulos.Length){
      // aqui puedes poner alguna funcion para que se ejecute al terminar todos los subtitulos.
   }else{
      Retornar ();
   }
}
}

 
si no te es útil quizás a otro por eso igual lo subo :'v le sea de utilidad igual lo hice por que necesito uno para mi proyecto xD.
 
Edit: olvide decir que le añadí eso que pediste al inicio de verificar si ya acabo el audio, no creo que sea necesario eso en su lugar puedes usar "yield return new WaitForSeconds (voz.clip.length);" esto hara que espere a que la voz se termine indirectamente :'v.
 
Saludos!
 
Cita de: lightbug date=1517333096Ah ok, igual como dato, si necesitas tener muchos elementos (vamos a llamarlos diálogos), como por ej subtitulos + audio correspondiente podés tener como base un scirptableObject, por ej, algo así:
   
   

using UnityEngine;
[CreateAssetMenu(menuName = "DialogueSystem/Dialogue")]
public class DialogueDataProfile : ScriptableObject
{
[System.Serializable]
public class DialogueData
{
   [TextArea(3,10)] //<--- esto es una maravilla
   public string m_dialogueString;
   public AudioClip m_audioClip;
}
public DialogueData[] m_dataArray;
}

   
      Entonces te vas en tu proyecto a "Create/DialogueSystem/Dialogue" (le mande este nombre pero llamalo como quieras) y ya tenés un dialogo.
   
   
      
   
   
      
   
   
      Incluso podés crearte más, por ej una secuencia de dialogos, osea otro ScriptableObject que contenga este SCo de recién, para no se, setear esta vez los personajes que lo dirán, acá tenés que ser creativo y productivo, pero la principal idea es diferenciar lógica (el pasar de un dialogo a otro, reproducir audio, etc)  y datos (los diálogos), entonces no terminas teniendo texto1 , subtitulo14, etc.
   
   
      Desde un componente cualquiera tuyo (idealemnte el Manager de diálogos) podés ir pasando de arriba a abajo, reproduciendo y mostrando el elemento del arreglo DialogueData como quieras, siempre tenés que tener una referencia al Sco para poder tomar sus datos.
   
   
      También podrías usas una cola "queue" (en vez del array que puse) ya que te interesa ir sacando el que venga, creo que es más eficiente, no se la verdad, no las uso demasiado.
   


Wow siempre busque como hacer eso y nunca lo encontré, eso me va a ser muy útil muchas gracias aunque no sea conmigo :'v
 
jajajajaja Te amo lightbug (En el buen sentido de la palabra) aquí la versión final lo usare en todos mis proyectos :'v
 

using UnityEngine;
using System.Collections;
using UnityEngine.UI;
[CreateAssetMenu(menuName = "DialogueSystem/Dialogue")]
public class DialogueDataProfile : ScriptableObject
{
[System.Serializable]
public class DialogueData
{
   [TextArea(3,10)] //<--- esto es una maravilla
   public string dialogo;
   public AudioClip audio;
   public float tieIni; // Tiempo para iniciar;
}
public DialogueData[] m_dataArray;
}
public class SubTitulos : MonoBehaviour{
//public string[] subtitulos;
//public AudioClip[] audio;
//public float[] tiempo; // Tiempo para iniciar cada dialogo.
public DialogueDataProfile.DialogueData[] dialogos;
public int contador;
public Text cuadroTexto;
public AudioSource voz;
public void Iniciar (){
   contador = 0;
   StartCoroutine (Subtitulo());
}
public void Parar (){
   StopAllCoroutines ();
}
public void Retornar (){
   StartCoroutine (Subtitulo());
}
IEnumerator Subtitulo (){
   yield return new WaitForSeconds (dialogos[contador].tieIni);
   cuadroTexto.text = dialogos[contador].dialogo;
   voz.clip = dialogos[contador].audio;
   voz.Play ();
   yield return new WaitForSeconds (voz.clip.length);
   contador += 1;
   if(contador >= dialogos.Length){
      // aqui puedes poner alguna funcion para que se ejecute al terminar todos los subtitulos.
   }else{
      Retornar ();
   }
}
}

 
ahora con la mejora :3
#2
General (Antiguo) / ¿Mi contraseña no se guarda?
Enero 29, 2018, 07:50:59 PM
Saludos GameMakers
 
Buenas, tengo un pequeño problemita no se si a otros le a pasado pero cada vez que voy a iniciar sección me dice que la contraseña es incorrecta para poder iniciar sección tengo que darle a recuperar contraseña cada vez que voy que iniciar sección y me a comensado a resultar algo tedioso, quisiera saber si estoy haciendo algo mal o no se si a alguien mas le esta pasando lo mismo, agradeseria mucho que alguien me eche una mano :)
#3
General (Antiguo) / (Aporte) Reproductor de musica
Enero 29, 2018, 05:59:58 PM
No hay de que, me gusta ayudar cuando tengo tiempo :) 
#4
General (Antiguo) / (Aporte) Reproductor de musica
Enero 29, 2018, 03:12:44 AM
Saludos Programadores
 
Tengo mucho tiempo sin pasarme por aquí y he echo un pequeño código que creo que le resultara útil para muchos que estén iniciando y e decidido compartirlo con ustedes para empezar de nuevo en esta comunidad con el pie derecho x'D
 
El script reproduce aleatoriamente las músicas dadas en una variable con una transición para que no cambien de golpe.
 
Solo necesitan agregar el script a un GameObject vacío y agregarle el tiempo que desean que use para la transición y agregar una lista de músicas a reproducir.
 
Editado:
 

using UnityEngine;
using System.Collections;
using Unit***itor;
// Ayuda: Boris 1998 registrado en Forum.unity.com
public class ReproductorMusica : MonoBehaviour{
public AudioClip[] musicas; // Musicas a reproducir.
public float fade = 2; // tiempo tardado en la trasicion de las musicas.
public Vector2 lapsos = new Vector2(0,200); // lapsos de tiempo sin sonido, en segudos.
[Range(0f,1f)]
public float volumen = 1;// volumen deseado que se escuche la musica.
public AudioClip backGround; // musica a reproducir durante el lapso.
private AudioSource audio1;
private AudioSource audio2;
private int musicaT;
public static ReproductorMusica reproductor;
void Start (){
   reproductor = gameObject.GetComponent<ReproductorMusica> ();
   audio1 = gameObject.GetComponent<AudioSource> ();
   if(audio1 == null){
      gameObject.AddComponent<AudioSource> ();
      audio1 = gameObject.GetComponent<AudioSource> ();
   }
   try {
      audio2 = gameObject.transform.GetChild(0).gameObject.GetComponent<AudioSource> ();
   } catch (System.Exception ex) {
      if(gameObject.transform.childCount == 0){
         GameObject ob = new GameObject ();
         ob.name = "ReproductorSecundario";
         ob.transform.SetParent (transform);
      }
      gameObject.transform.GetChild(0).gameObject.AddComponent<AudioSource> ();
      audio2 = gameObject.transform.GetChild(0).gameObject.GetComponent<AudioSource> ();
   }
   musicaT = Random.Range (0,musicas.Length);
   StartCoroutine (Reproducir(audio1));
}
public static void Volumen (float vol){
   ReproductorMusica.reproductor.audio1.volume = vol;
   ReproductorMusica.reproductor.audio2.volume = vol;
}
public static void CambiarMusica (AudioClip musica){
   ReproductorMusica.reproductor.StopAllCoroutines ();
   ReproductorMusica.reproductor.StartCoroutine (ReproductorMusica.reproductor.RPA(musica));
}
IEnumerator RPA (AudioClip musica){
   AudioSource ad,ad2;
   if (audio1.clip != null) {
      ad = audio2;
      ad2 = audio1;
   } else {
      ad = audio1;
      ad2 = audio2;
   }
   ad.clip = musica;
   ad.Play ();
   StartCoroutine (FadeStart(ad,fade,volumen));
   while (ad2.volume > 0) {
      ad2.volume -= volumen * Time.deltaTime / fade;
      yield return null;
   }
   ad2.Stop ();
   ad2.clip = null;
   ad2.volume = volumen;
   musicaT = Random.Range (0,musicas.Length);
   yield return new WaitForSeconds(ad.clip.length-fade);
   yield return StartCoroutine(FadeOut (ad, fade));
}
public static void Apagar (){
   ReproductorMusica.reproductor.StopAllCoroutines ();
   ReproductorMusica.reproductor.StartCoroutine (ReproductorMusica.reproductor.AP());
}
IEnumerator AP (){
   while (audio1.volume > 0) {
      audio1.volume -= volumen * Time.deltaTime / fade;
      audio2.volume -= volumen * Time.deltaTime / fade;
      yield return null;
   }
   audio1.Stop ();
   audio1.clip = null;
   audio1.volume = volumen;
   audio2.Stop ();
   audio2.clip = null;
   audio2.volume = volumen;
}
public static void Reiniciar (){
   ReproductorMusica.reproductor.StopAllCoroutines ();
   AudioSource ad,ad2;
   if (ReproductorMusica.reproductor.audio1.clip != null) {
      ad = ReproductorMusica.reproductor.audio2;
      ad2 = ReproductorMusica.reproductor.audio1;
   } else {
      ad = ReproductorMusica.reproductor.audio1;
      ad2 = ReproductorMusica.reproductor.audio2;
   }
   ReproductorMusica.reproductor.musicaT = Random.Range (0,ReproductorMusica.reproductor.musicas.Length);
   ReproductorMusica.reproductor.StartCoroutine (ReproductorMusica.reproductor.Reproducir(ad));
   ReproductorMusica.reproductor.StartCoroutine (ReproductorMusica.reproductor.AP1(ad2));
}
IEnumerator AP1 (AudioSource ad){
   while (ad.volume > 0) {
      ad.volume -= volumen * Time.deltaTime / fade;
      yield return null;
   }
   ad.Stop ();
   ad.clip = null;
   ad.volume = volumen;
}
IEnumerator FadeStart (AudioSource audioSource, float FadeTime, float vol) {
   audioSource.volume = 0;
   while (audioSource.volume < vol) {
      audioSource.volume += vol * Time.deltaTime / FadeTime;
      yield return null;
   }
   audioSource.volume = vol;
}
IEnumerator Reproducir (AudioSource ad){
   ad.clip = musicas [musicaT];
   ad.Play ();
   StartCoroutine (FadeStart(ad,fade,volumen));
   musicaT = Random.Range (0,musicas.Length);
   yield return new WaitForSeconds(ad.clip.length-fade);
   yield return StartCoroutine(FadeOut (ad, fade));
}
IEnumerator FadeOut (AudioSource audioSource, float FadeTime) {
   AudioSource audioSource2;
   if (audioSource == audio1) {
      audioSource2 = audio2;
   } else {
      audioSource2 = audio1;
   }
   float lp = Random.Range ((int)lapsos.x, (int)lapsos.y);
   if(lp == 0){
      StartCoroutine (Reproducir (audioSource2));
   }else if(backGround != null){
      StartCoroutine (FadeStart(audioSource2,fade,volumen*0.75f));
      audioSource2.clip = backGround;
      audioSource2.Play ();
      audioSource2.loop = true;
   }
   while (audioSource.volume > 0) {
      audioSource.volume -= volumen * Time.deltaTime / FadeTime;
      yield return null;
   }
   audioSource.Stop ();
   audioSource.clip = null;
   audioSource.volume = volumen;
   yield return new WaitForSeconds (lp);
   if(lp > 0){
      StartCoroutine (Reproducir (audioSource));
      while (audioSource2.volume > 0) {
         audioSource2.volume -= volumen * Time.deltaTime / FadeTime;
         yield return null;
      }
      audioSource2.Stop ();
      audioSource2.clip = null;
      audioSource2.loop = false;
      audioSource2.volume = volumen;
   }
}
}

 
Propiedades.
 
fade : El tiempo que tardan las transiciones en segundos.
 
musicas : lista de músicas a reproducir.
 
Añadido :
 
lapsos: lapsos de tiempo aleatorio(Vector2(Minimo,Maximo)) en el que no sonara la musica.
 
volumen: volumen de la musica.
 
backGround: Sonido de fondo que sonara durante los lapsos (se puede dejar en blanco).
 
Funciones Estaticas:
 
Volumen: cambia el volumen de la musica.
 
CambiarMusica: cambia la musica por la musica dada con una transicion con la duracion dada en fade.
 
Apagar: apaga el reproductor.
 
Reiniciar: Reinicia el reproductor.
 
Aquí pueden descargar el código.
 
PD: no soy bueno comentando así que no comento los códigos espero entiendan el código en caso de que tengan que modificar algo :'v
 
Edit: le cambie el titulo por que creo que generaba confucion.
#5
General (Antiguo) / Hol@
Septiembre 13, 2016, 10:49:57 PM
Bienvenido, Wow tienes una bucantidad de projectos.
#6
General (Antiguo) / Buenaaaaaaaaas gente!
Septiembre 13, 2016, 10:44:31 PM
Bienvenido Adrian :3
#7
General (Antiguo) / Catie, juego de plataformas 3D
Septiembre 08, 2016, 02:44:34 PM
O.o? pense que se movia con fisica, creia que ese era el problema de la SpiderCat, pero ahora que lo pienso la fisica del unity no permitiria lo del diglett :v y por si te silve de algo(no se por que no lo mencione antes xD) lo del diglett me ocurrio fue que cuando arranco arranco adentro del bloque no podia saltar ni nada solo moverme al vacio :´v
#8
General (Antiguo) / Catie, juego de plataformas 3D
Septiembre 05, 2016, 09:53:30 PM
Y a este truco lo llamo el diglett :3 
 
y con unstedes la asombrosa !!SSSSSPider Cat!! 
 

 
Creo que te tengo la solucion para lo de SpiderCat, podria hacerte un script para resolver eso si me lo permites claro :v
 
PDT: Uso UnityScripts
#9
General (Antiguo) / Catie, juego de plataformas 3D
Septiembre 05, 2016, 09:19:31 PM
Si, yo estoy de acuero con ellos, yo te recomiendo que bloquees la camara en una sola direccion, y que los botones no hagan girar a la gata sino que hagan que se mueva en la direccion deseada y claro que la gata mire en dicha direccion xD
 
Yo te recomiendo que la camare quede algo como esta imagen:
 

 
 
 
Aqui el gato caza bug trabajando denuevo, descubri que si le saltas a los bloques de arena antes de que se caigan no se caen :´v y luego no se puede saltar y se pone algo resbaloso D:! !!la probre gata patina!!
 

 
Despues de varios intentos, pense o solo pasa cuando son 2 arenas juntas, o tube mala suerte :´V jajajajaja, pero luego agarre a este trabieso:
 

 
Jujuju estar arenas parecen llenas de bugs aqui encontre a esta que le tiene miedo a las alturas y se agarro del primer cubo que encontro para no seguir callendo:
 

 
O.....O !!!***!!! aqui fue cuando intente montar una arena salbaje y callo y me dejo suspendodo:
 

 
si te silbe de algo la gata dio un minisalto cuando cai en la arena y la arena tardo en reaccionar.
#10
General (Antiguo) / Nuevo Projecto E.V.O (Copia)
Septiembre 05, 2016, 05:30:07 AM
Jajajajajaja pues para evitar que me tiren la puerta en la cara, creo que le dare un giro al juego :´v
 
Bueno estare ausente un tiempo en lo que invento una nueva historia y nombre :´v
 
cualquier suguerencia es bien venida
 
Saludos :3
#11
General (Antiguo) / Nuevo Projecto E.V.O (Copia)
Septiembre 05, 2016, 03:34:45 AM
No, no quiero cambiarle el nombre ni nada xD, la pregunta es tendre problemas con este projecto, si le cambiara el nombre fuera plajio xD solo quiero modernisarlo.
 
Por que si tendria problemas, entonces no solo le cambiaria el nombre lo cambiaria completamente(la historia y todo) solo mantendria la idea de evolucion.
 
el problema seria inventar otra historia :c
#12
General (Antiguo) / Nuevo Projecto E.V.O (Copia)
Septiembre 05, 2016, 01:47:46 AM
Buenas quisiera hacerles una pregunta sobre este projecto, es que muchos compañeros me dicen que tendre problemas con nintendo, este es un juego muy biejo y no pretendo ganar nada con el mas que hacer curriculum ¿Ustedes creen que pueda tener problemas con nintendo? si ese fuera el caso ¿Alguna manera para obtener permiso?
#13
General (Antiguo) / Catie, juego de plataformas 3D
Septiembre 03, 2016, 11:44:26 PM
¬¬ no confio en ese tiempo tu heres el programador del juego orita y lo colocaste con codigos(Tramposo)  ¬¬ 
 
Me gusta el juego espero y sigas avanzando asta terminarlo sigue contandonos los avances saludos :3
#14
General (Antiguo) / Catie, juego de plataformas 3D
Septiembre 03, 2016, 08:20:34 PM
Siempre hay forma de hacer los marcadores sin perdel ese toque, solo no tienes que poner cuantas monedas son las que se nesesitan, pero almenos sabes cuantas llevas, y marcar las veces que repites no le quita nada xD el tiempo no c :v, yo solo digo que pongan algo por ahi jejeje es que la pantalla se ve muy peladita, pero ya saben es mi opinion(no tienen que tomarlo en cuenta) :´v
 
Ahora si puedo disfrutarlo bien no sabia lo de la camara :3
 
Y aprobecho este momento para informarles que soy todo un crack !!S++ papus superenlo!!
 

 
PDT: despues de durar un buen rato sin hacer nada con la camara lo mas alejada posible, descubrin un bug que creo que se les escapa, la camara se puso temblorosa.
#15
General (Antiguo) / Catie, juego de plataformas 3D
Septiembre 02, 2016, 08:09:03 PM
Jajajajajaja tenia la pc en mute perdona jajajajaaajajaja lol :´v si ahora los veo que solo le falta la musica xD
 
si no se desiden por la musica les recomiendo sonidos anvientales, siempre son bien venidos :3