Jump to content

Jhonatan00_00

Registrados
  • Content Count

    151
  • Joined

  • Last visited

  • Days Won

    4

Jhonatan00_00 last won the day on February 7

Jhonatan00_00 had the most liked content!

Community Reputation

20 Excellent

About Jhonatan00_00

  • Rank
    Asiduo

Profile Information

  • Especialidad
    Diseñador

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

  1. Buenos días, si no funciona solo cuando haces cambios bruscos podrían ser muchas cosas: - La forma en que esté programado por script el comportamiento de las animaciones (si tu no lo has programado y creado todo desde cero no sabes como funciona exactamente y te puedes volver loco). - Como estén montadas las animaciones en el Animator. - Un fallo del Animator (a veces los problemas se solucionan simplemente reiniciando Unity, otras veces eliminando las transiciones y volviendo a crearlas). Sin mas información no se a que podría deberse el fallo. Saludos.
  2. Buenos días compañeros!!, por fin he solucionado mis problemas con el Animator, aunque no del todo, pero quiero dejar aquí la solución para que no le pase a nadie mas. Unity tiene un orden de transiciones, pero ese orden al menos en la versión 4.7.2 que es la que uso yo, no funciona correctamente hasta que no aprendes a utilizar "Atomic", que es una casilla que por defecto viene marcada, pero que al desmarcarla significa "NO PASAR A ESTA ANIMACIÓN SI ANTES ESTÁ EJECUTANDOSE OTRA QUE ESTÉ PRIMERO EN EL ORDEN DE TRANSICIONES". Quiere decir, que si le damos a correr y a saltar al mismo tiempo, Unity podría intentar hacer la animación de correr y después la de saltar creando una pose extraña, mientras que si destildamos la casilla Atomic y colocamos en la lista de transiciones la pose de saltar en primer lugar, Unity antes de iniciar la animación de correr iniciará la de saltar porque tiene prioridad. Esto me ha solucionado el 90% de los errores de animación, pero aún hay otros como que por ejemplo esté realizando una transición y quieras interrumpirla, que creo que lo voy a tener que hacer con programación, porque esta versión de Unity no tiene el Has Exit Time. Saludos.
  3. Buenas tardes, ya no se que hacer... conforme el personaje tiene mas animaciones funcionan peor. Entre el trabajo que a veces no me deja echarle un rato al juego y que me desmotivo y lo dejo un montón de tiempo porque hay problemas que no puedo solucionar no termino el juego en la vida... Al final lo terminaré dejando como todo a medias, porque son demasiadas cosas que no funcionan bien 🤣 ¿Alguna idea o truco, script, etc para que las animaciones funcionen a la perfección?. He probado de todo y me hace cosas muy raras.
  4. Buenos días Lightbug, el principal problema es que estoy usando la versión de Unity 4.7.2 y no incluye las opciones que me indicas. De todo lo que me has enseñado tan solo he podido poner en práctica lo de dar prioridad a las transiciones (que no sabía que se podían ordenar por prioridad), pero aún así me sigue haciendo cosas raras. Por ejemplo mi personaje puede volar y si al caer tocas el suelo y pulsas rápido la tecla de saltar a veces me inicia la animación de salto y otras veces hace un intento de animación de volar con posturas raras como si estuviese corriendo al mismo tiempo, es rarísimo. Cosas así son las que quiero impedir que pasen y aunque solo pasan en momentos puntuales quisiera solucionarlo. Se que me vas a decir que actualice Unity y lo he hecho varias veces, pero cada vez que actualizo me arrepiento porque Unity me estropea todo el trabajo realizado, la iluminación y muchas otras cosas y tengo que volver a la versión que tenia. Por medio de script debería de poder dejarlo todo perfecto para que no pasen estas cosas que parecen confusiones del Animator. He conseguido que funcione bien sincronizada la animación de tocar el suelo con GetComponent<Animator>().CrossFade ("Tocando_Suelo", 0.8f); De este modo justo cuando toca realiza su animación sin hacerme cosas raras, pero hay un problema y es que al parecer el tiempo de transición tiene en cuenta la duración de la animación inicial, quiero decir, si la animación de correr es mas larga que la animación de salto Unity mezclará las animaciones de una forma mas lenta o mas rápida aún teniendo el mismo tiempo de transición de 0.8f, dependiendo de la duración de la animación de la que venga. ¿Cómo puedo indicar que siempre sea el mismo tiempo de transición sin importar lo que dure la animación inicial?.
  5. Buenas tardes Francoe1, llámalo invocar o llámalo reproducir... en la práctica lo que hace es que se reproduzca una animación de un estado sin tener que haberlo montado en el Animator con ningún booleano, etc, simplemente utilizas este comando y se reproduce la animación... Lo que necesito saber es que mas cosas puedo hacer por medio de script que sean practicas para hacer animaciones. ¿Existe alguna forma de indicar por script que la animación por defecto sea la de reposo, para que cuando no toquemos ninguna tecla se inice o tenemos que usar a la fuerza también el ().play?. Estoy viendo de que forma puedo montarlo todo por script pero que tampoco sea demasiado complejo.
  6. Buenas tardes, es un efecto muy extraño y sin ver la escena montada también es mas difícil saber que es lo que causa ese error, pero puede que el problema esté en el suavizado de la malla, es decir: desde Unity ve al objeto 3D de la escena que cause ese fallo y ve a su pestaña de Model, busca la opción de Smoothing Angle y ponlo en 180 o también en 45 grados, renderiza la iluminación estática y prueba con que suavizado se ve mejor. Dinos si desaparece. Un saludo.
  7. Jhonatan00_00

    Duda Renders

    Buenas tardes, como dice Francoe1 estás confundiendo términos o quizá los entiendes pero no del todo. Renderizar es dibujar en pantalla. Blender tiene su propio motor de renderizado y Unity tiene su propio motor de renderizado también, uno mas orientado a la renderización de video (como es el caso de Blender) y otra enfocada a la renderización en tiempo real. Cada motor tiene su propio sistema de iluminación, materiales y efectos por lo que a menudo lo que crees en programas como Blender se perderá al exportarlo a Unity quedando básicamente el modelado 3D con su texturizado UVW y las animaciones. Deberás de recrear tu escena lo mas parecida a como se vea en Blender pero desde Unity, creando materiales nuevos, iluminación, etc... En internet hay videos donde utilizan shaders para utilizar V-ray desde Unity, pero nunca lo he probado... Si alguien sabe mas del tema y puede ayudar que lo diga. Saludos.
  8. Buenas tardes, después de mucho tiempo intentando que las animaciones vayan perfectas en todas las circunstancias he llegado a la conclusión de que el Animator (aunque es muy práctico a la hora de crear transiciones, etc) es bastante limitado y a menudo falla obligándote a tener que ingeniártelas para que todo funcione correctamente. Por ejemplo tengo un personaje con multitud de animaciones y se da el caso de que esté parado, pulsemos el botón de avanzar y justo después (si sabes hacerlo en el momento preciso) saltes y se produzca una transición entre dos estados que no debería de haber ocurrido. También se da el caso de que estés corriendo y caigas, pero si la caída no es lo suficientemente alta como para que de tiempo a hacer la transición entre la animación cayendo y la animación de haber tocado suelo, se producen animaciones muy poco realistas que no quedan bien. La mejor solución creo que es controlar las animaciones por script (cuando son complejas y tienen muchas variantes), para hacer que justo en el momento en el que toque suelo haga su animación de haber tocado el suelo, independientemente de que se encuentre en un estado saltando, corriendo, etc (por poner un ejemplo). El problema es que no conozco todos los comandos que podrían facilitar esta tarea de programación y quisiera que los fuésemos recopilando aquí, por ejemplo yo conozco estos: GetComponent<Animator>().Play ("Animacion"); //Sirve para reproducir un estado de animación instantátenamente. GetComponent<Animator>().CrossFade ("Animacion", 0.2f); //Sirve para iniciar una transición o interpolación desde el estado en el que nos encontremos al indicado. ¿Como indicamos por medio de script por ejemplo que si no pulsamos ninguna tecla la animación a reproducir sea la de reposo?. Un slaudo.
  9. Buenas tardes compañeros, en mi opinión el profesor tiene razón en todo, primero en lo de que no lo has hecho tu y segundo en que debes eliminar cosas y el problema que tenemos cuando lo que tenemos no lo hemos hecho nosotros es que no sabemos lo que tenemos que eliminar si nos sobra... Estamos llegando a un punto en el que pensamos que las cosas son tan fáciles como descargar un recurso y juego hecho, cuando ese recurso lo ha tenido que programar o hacer alguien que si sabe de verdad y que es capaz de crear, algo que deberíamos de aprender todos, a crear, no a copiar. Si todos usamos los mismos recursos ya creados todos los juegos serían clones los unos de los otros. Creo que debes de hacer lo que ha dicho Gante Juega, borra lo que no necesites y observa los errores que te da Unity en la consola, haz click sobre ellos y asegúrate de borrar las líneas dentro de los script donde se haga llamada o referencia a algo que hayas borrado. Sin ver que errores te da ni nada más, no podemos decirte exactamente que hacer, pero seguro que la cosa va por ahí... Lo que te habrá pedido tu maestro es que hagas un juego básico, muy básico de por ejemplo una nave que dispare o alguna cosa así, porque en un mes no te va a dar tiempo a hacer nada mejor y no lo que has hecho, por eso te regaña. Debes de aprender y hacer las cosas por ti, sean cosas buenas o mediocres, pero aprender que es lo importante. Un saludo.
  10. Buenos días a todos, al final he podido solucionarlo. El fallo se producía porque estoy usando switch para el salto y al parecer Unity pierde la información a cerca de las teclas que estén pulsadas al pasar de un paso a otro del switch, es decir que si tenemos la tecla pulsada y queremos que en el siguiente paso detecte si la hemos soltado tendremos que volver a pulsarla para soltar de nuevo o Unity no lo detectará. He tenido que crear una variable como dije antes y he colocado esta variable fuera del switch, de tal modo que cuando pulsas el botón esa variable es "true" y al soltarlo es "false", así no tiene que detectar dentro del swicht si pulsas o no la tecla porque esa variable actúa igual y funciona. En realidad no he hecho que el personaje cargue para saltar, si no que he necesitado hacer unos ajustes para que la animación del personaje se vea fluida, se agache, después se impulse y salte, etc... GRACIAS.
  11. Buenos días Francoe, es exactamente como yo lo he hecho, pero entonces no se lo que habré programado mal para que no me funcione como yo quiero... La forma en la que lo he programado es creando un contador que va sumando desde el momento en el que el personaje se ha agachado para impulsarse. Después se impulsa y si ese contador llega a 0.2f por ejemplo entonces la gravedad se activa (porque sería lo máximo que podemos saltar), pero si soltamos el botón de salto antes de que el contador llegue a ese número también activamos la gravedad un poco antes y saltaría menos. Al parecer el fallo viene porque Unity no me detecta bien cuando hemos soltado el botón y creo que voy a tener que crear una variable booleana que se llame Tecla_Pulsada o algo así y a ver si así funciona... Ya os contaré. Gracias.
  12. Buenas tardes compañeros y feliz año nuevo !! 🤣 (casi en febrero ya). He estado bastante tiempo sin tocar mi proyecto por culpa del trabajo y hoy me ha dado por ponerlo de nuevo y la verdad es que cuando te pegas bastante tiempo sin ver lo que hiciste y lo observas después, te das cuenta automaticamente de lo que está bien y lo que no, por lo que no me ha venido mal el "descanso". Lo primero que he visto que no está bien del todo es el salto progresivo que programé y es porque no te permite dar el salto muy pequeño o muy grande, si no que la diferencia del salto mas pequeño al mas grande es prácticamente la misma y creo que es por la forma en la que lo he programado (un poco chapucera). ¿De que forma podría solucionar el tema de programar un salto regulable? (me basta con la idea, no necesito el código de programación). Un saludo.
  13. Buenos días Francoe, para quien sabe bastante de programación puede resultar obvio que el orden altera el producto pero para un novato no es tan sencillo de entender, porque según tengo entendido el código que escribimos se ejecuta una vez por cada fotograma, por lo que si cambiamos el orden de las cosas no debería de importar tanto, puesto que aunque no le des un dato que necesite en una línea concreta, como va a seguir leyendo de nuevo todo el código en el siguiente fotograma, va a tener el dato... De todos modos ya lo he solucionado. La mayoría de fallos se producían porque había creado en el Animator parámetros que después borré, pero que en el script seguía haciendo llamada y no estaban, Unity no me avisaba de que había ningún error (por lo que fuese) y al actualizar las animaciones del personaje desde su pestaña "Animations" de pronto me empezaron a saltar todos los errores que había relacionados con animaciones y tuve que empezar a borrar llamadas a parámetros del Animator y llamadas a animaciones del personaje que ya no existían y ahí comenzó a funcionar lo de chocar con las paredes y otras muchas cosas. Algunos otros errores si que se debían al orden de programación. Una pregunta que viene al caso del orden de programación: Yo tengo programado que el movimiento se realice con un .move, pero en otra línea y después de haber hecho otros cálculos tengo programado que el salto se realice con otro .move y a parte según la inclinación del suelo te puedes resbalar, etc y eso lo tengo calculado también a parte y lo aplico con otro .move diferente (ya van 3 .move). ¿Sería mas correcto meter todos los cálculos en un solo .move?. Saludos.
  14. Buenos días a todos, he estado ordenando mi código y de paso puliéndolo un poco y he observado cosas rarísimas. Por ejemplo he podido observar que la mayoría de errores que se producían se debían al orden del código, ya que no puedes mover un objeto y después de moverlo dar la orden de calcular el movimiento de nuevo, si no que se debe de hacer al contrario, primero calcular y después mover, porque aunque parezca lo mismo, si mezclamos varias trayectorias como el salto, el avance, las inercias, etc y están mal ordenadas, al final te va a dar fallos de coordenadas. Lo que no entiendo es: ¿COMO PUEDE SER QUE UNITY SE SALTE PARTE DEL CÓDIGO SEGÚN EL ORDEN?. 😤 Tenía creado un raycast para detectar cuando el personaje choca contra una pared y que al chocar ralentice su marcha y comience a caminar (típico en casi cualquier videojuego) y funcionaba, pero resulta que ahora según donde ponga la parte del if () que determina que debe de hacer cuando choque, a veces choca y a veces no. A veces detecta que está tocando la pared y funciona bien y cuando cambio el if () de posición dentro del código ya no me detecta de nuevo las paredes. ¿Puede estar fallando Unity?.
  15. Buenas tardes Francoe, acabo de encontrar la solución trasteando un poco. Si colapsas el objeto que tenga el modificador Shell quedarán como dos objetos que son uno solo y si seleccionamos Element y no Polygon, podremos seleccionar el objeto interno solamente y eliminarlo. En mi caso no podía hacerlo porque la cara interna y externa estaban unidas al ser un modelo cóncavo tipo vaso, pero he podido conseguirlo igual porque solo he tenido que eliminar la fila de polígonos que unía una capa con la otra para después seleccionar con Element el objeto interno y así poder eliminarlo. No se que me pasa que pregunto cosas que no le encuentro solución y al momento muchas veces se me enciende la bombilla y lo termino solucionando, cuando me he pegado un mes sin encontrar la solución. 🤣 Saludos.
×
×
  • Create New...