Jump to content

Trunex

Registrados
  • Content Count

    49
  • Joined

  • Last visited

  • Days Won

    1

Trunex last won the day on May 26 2016

Trunex had the most liked content!

Community Reputation

9 Neutral

About Trunex

  • Rank
    Usuario

Profile Information

  • Especialidad
    Coder

Recent Profile Visitors

805 profile views
  1. Los datos que obtengo son los mismos datos que se le pasan por audioclip.SetData(float[], int), de echo lo he probado y a través del SetData si puedo escucharlo, pero necesito introducirlo a medida de que el audioclip lo necesita por tema de rendimiento, la clase que uso para leer el fichero es esta https://github.com/WulfMarius/NAudio-Unity/blob/master/NAudio/Wave/WaveStreams/AudioFileReader.cs como puede ver lo que hace es ver la extensión del archivo, y según dicha extensión pues usa un lector u otro. Tampoco entiendo por qué al llamar AudoClip.Create() con el stream en false es cuando se bloquea el juego durante un 1 segundo y sin embargo el SetData no tarda nada.
  2. He probado su código, y funciona perfectamente, luego he cambiado los parámetros para adaptarlo a un fichero mp3 auténtico y me sigue sin reproducir ningún sonido. Estos son los datos obtenidos del fichero: Debug.Log("LengthSamples: " + audioFichero.Length); //78354432 Debug.Log("Frecuency: " + audioFichero.WaveFormat.SampleRate); //48000 Debug.Log("Datos audio: " + datosAudio.Length); //78354432 Debug.Log("Canales: " + audioFichero.WaveFormat.Channels); //2 Entonces, audioFichero es el contenedor que me devuelve la librería al abrir el archivo mp3, de este contenedor obtengo en orden: lengthSamples, frecuency y channels; datosAudio es el float[] con el contenido del audio (el equivalente a waveData en su código). ¿Por casualidad tiene alguna idea de qué puede estar fallando?
  3. Es un mp3 de una canción cualquiera descargado de internet, y al abrirlo pues obtengo los canales, la frecuencia, un float[] con los datos, etc. No se si te refieres al método SetData(float[], int) o a la función OnAudioRead, el SetData no lo puedo usar, ya que para poder usar el SetData tengo que crear el AudioClip con la el parámetro stream en false y llamar a ese método Create me bloquea el Unity durante 1 segundo, entonces lo único que puedo hacer es crear el AudioClip con el parámetro stream en true y pasarle los datos por la función OnAudioRead así no se me quedaría bloqueado el juego; si te refieres a cómo debo implementar el OnAudioRead, ¿podrías enseñarme el código o un esquema de dicha implementación si no es mucha molestia?
  4. Si claro, lo único que no sé es cambiar la función OnAudioRead para que en lugar de crear un sonido constante pueda pasarle (a medida de que me los va pidiendo) los datos del archivo de audio.
  5. El float[] que obtengo de leer el archivo de audio es el mismo float[] que se pasa por parámetro en clip.SetData(float[], int) Por lo que se ve en los parametros se pasa por valor, pero si ves el ejemplo de Unity (https://docs.unity3d.com/ScriptReference/AudioClip.Create.html) modifica es float[] data que se supone que esta pasado por valor. El problema que tengo es que al crear la instancia de AudioClip Unity se queda bloqueado durante 1 segundo, el SetData me funciona perfectamente y es inmediato, el problema es al crear la instancia del AudioClip al cual le voy a pasar los datos, no se si me explico...
  6. Hola a todos, estoy intentando hacer un pequeño reproductor para que el usuario pueda indicar una ruta de un directorio y mientras que está jugando pueda escuchar de fondo los audios que tenga en dicho directorio. Para solucionar el tipo de los audios (mp3 no es soportado en standalone) uso una variante de la librería NAudio adaptada a Mono. Actualmente me funciona, es capaz de leer los audios y reproducirlos. El problema es que cada vez que se crea el AudioClip (AudioClip.Create) Unity se queda pillado durante 1 segundo. He intentado crear el AudioClip en una hebra y no es posible, el AudioClip solamente se puede crear en la hebra principal. He buscado en la especificación de la api y hay un ejemplo de uso de AudioClip.PCMReaderCallback en el cual crea de forma dinámica una onda senoidal (https://docs.unity3d.com/ScriptReference/AudioClip.Create.html). Yo tengo un float[] en el cual tengo los datos del audio, ese float[] son los datos que antes le pasaba por AudioClip.SetData(), el problema que tengo es que no sé cómo puedo hacer que el float[] que ya tengo lo lea AudioClip.PCMReaderCallback. He probado estas implementaciones y ninguna me ha funcionado, no me dan error pero no se escucha nada cuando lo reproduzco con el AudioSource. void OnAudioRead(float[] data) { int count = 0; while (count < data.Length) { data[count] = audio.Datos[count]; count++; } } void OnAudioRead(float[] data) { int count = 0; int posicion = 0; while (count < data.Length) { data[count] = audio.Datos[posicion]; count++; } posicion++; } void OnAudioRead(float[] data) { data = audio.Datos; } Gracias por cualquier ayuda.
  7. Sería ajustar la separación para que se vean todas.
  8. Hola a todos, resulta que tengo un horizontal layout group con un tamaño definido y varios elementos layout, pero cuando pongo varios de estos elementos se pasan del límite del grupo tal y como se puede ver en la captura de abajo. ¿Cómo se haría para que por más elementos que ponga no se salgan del límite del layout group? Gracias.
  9. Pues no sé si funcionará porque lo he hecho de nuevo en otra versión más antigua y tenia el mismo problema xd
  10. Solamente puse un Start y un Awake con un print en cada uno para poder ver el valor que tomaba la variable de tipo Vector3 y tambien tenía otro print en el setter y al momento de crear la instancia, y los del setter y crear la instancia los valores que imprime son iguales pero los del Awake y el Start son distintos a los del setter y al de crear la instancia. Por lo que parece que la variable se cambia sola nada más acabar el método que la instancia, y no hay nadie llamando ni usando dicha variable. Es una cosa muy extraña.
  11. El problema fundamental es que yo le paso el Vector3 al misil, pero luego ese valor se cambia, cuando la clase Misil hace el Start() o Awake() ya se ha cambiado el valor, lo he comprobado, he quitado todo lo de objetiv, obj, lo he dejado solo en instanciar y asignarle el vector y sigue pasando lo mismo, es algo muy extraño ya que no hay nada que la modifique solamente se la atribuyo y ya. Y con lo de que en el editor no se ve dicha modificación me refiero a que como la variable es pública la puedo ver y efectivamente los valores no son los que se le pasaron por el setter.
  12. Gracias por responder. Respecto a la primera parte no hay problema la velocidad qu ele tengo puesta es 2m/s por lo que la variación entre frames es pequeña y ademas comparo la distancia para ver si esta cerca ya que es muy dificil que pase exactamente por ese punto, lo de hacer el translate y luego el lookat lo he cambiado como tu me has dicho, luego el método CalcularPrediccion4 es un método que me devuelve un Vector3 que es la posición en la que se encontrará el objetivo teniendo en cuenta la distancia y la velocidad del misil (la variable se llama velocidadbala), por este motivo el punto objetivo es inmovil, porque es el punto donde va a estar el target. También me he dado cuenta de que a veces cuando dispara por primera vez no se pasan bien los parametros velocidad y objetivo al misil instanciado y por lo tanto tiene velocidad 0 y su objetivo es el punto (0,0,0) sin embargo, cuando lo depuro me sale que si se ha modificado pero en el editor no se ve dicha modificación de las variables. He usado tanto variables globales como locales y me pasa el mismo problema.
  13. Gracias por responder. Lo de los nombre son pruebas que he he hecho para ver que pasaba, objetivo es una variable global de tipo vector3, lo utilicé para guarda ahí el valor antes de usar la variable local obj, objteiv es el transform del cubo en blanco que aparece en la captura, y que por lo visto ese no tiene problemas ya que le asigno la variable obj y se situa en la posición correcta. He hecho la depuración como dijiste y en la depuración los valores se guardan correctamente pero luego voy al editor, y los valores de la variable son distintos a los que sale en la depuración.
  14. Hola a todos, el problema es el siguiente: quiero instanciar un proyectil y que llegue a cierta posición, entonces lo instancio, lo roto mirando al punto pero no llega nunca a dicho punto y es que haciendo pruebas resulta que la variable Vector3 por el cual le paso el punto destino (ya que cuando llegue a ese punto quiero que se destruya) se cambia sola, cuando se lo paso mediante un set se cambia sus valores. El código es el siguiente: public void Disparar(Buggy target) { if (enfriamientoactual > 0) return; //objetivo = Vector3.zero; Vector3 obj = CalcularPrediccion4(target); Debug.Log("Primero"); objetivo = CalcularPrediccion4(target); transform.LookAt(obj); objetiv.position = obj; Debug.Log(obj); Debug.Log("Segundo"); GameObject misilobj = Instantiate(misil, transform.position, transform.rotation); misilobj.transform.LookAt(obj); Debug.Log(obj); Debug.Log("Tercero"); Misil misilscript = misil.GetComponent<Misil>(); misilscript.Velocidad = velocidadbala; misilscript.Objetivo = obj; Debug.Log(obj); Debug.Log("Cuarto"); enfriamientoactual = enfriamiento; } El de la clase Misil es este: public float velocidad; public Vector3 objetivo; public float Velocidad { set { velocidad = value; } } public Vector3 Objetivo { set { Debug.Log(value); objetivo = value; } } void Update () { //Debug.Log(objetivo); transform.Translate(Vector3.forward * velocidad * Time.deltaTime, Space.Self); transform.LookAt(objetivo); if (Vector3.Distance(transform.position, objetivo) < 0.25f) { Destroy(gameObject); } } Luego en la captura de pantalla del editor se imprime por consola un vector distinto al guardado en la variable "objetivo" de Misil. Alguien sabe por qué ocurre esto? Gracias.
UnitySpain © Todos los derechos reservados 2020
×
×
  • Create New...