Jump to content

lightbug

Registrados
  • Content Count

    2,375
  • Joined

  • Last visited

  • Days Won

    202

lightbug last won the day on July 3

lightbug had the most liked content!

Community Reputation

813 Excellent

About lightbug

  • Rank
    Leyenda

Profile Information

  • Especialidad
    Coder

Recent Profile Visitors

2,884 profile views
  1. 🤣🤣🤣 No pude contenerme.
  2. Quizás el temita de las oscilaciones se deba al "Apply root motion" del componente Animator (?). Fijate si desactivando el bool ese se va eso. La otra que se me ocurre es algún problema con el Avatar en sí, andá a las opciones de importación del modelo animado (cliqueando sobre el modelo), luego rig. Te debería decir "Humanoid", que está bien, luego dale al botón "Configure...". Fijate si están todos los huesos en verde, si no, reiniciá la pose en T pose. Si bajás te debería decir en "Pose" algo como "Enforce T-Pose" o similar. Dale a eso, y aplicá. Ya que estás acá, no estaría mal revisar la definición de los huesos, asegurate que el hombro esté como hombro, la pierna derecha como pierna derecha, y así. Con "jerarquía" me refería al panel "Hierarchy" del editor de Unity, especificamente al objeto de tu personaje (con todos sus hijos, nietos, etc). Igual, no es que sea determinante a la hora de encontrar el problema (probablemente no aporte nada relevante), pero es que muchas veces en vez de "hablar" acerca del problema es mejor mostrar la escena desde donde se pueda, de esa forma te van a poder ayudar mejor. Sí, excelente 👌
  3. Podrías subir más info? Dónde está el pivot (blender y Unity)?, ¿Cómo posicionas el personaje? ¿Cómo es la jerarquía? ¿Es un humanoide o un generic? etc etc etc.
  4. Eso está mal, nunca vas a cambiar de Vector3.down de gravedad. El raycast (aunque prefiero un sphere cast) tiene que darte solamente la normal. Una vez que tengas esto es cuestión de hacer gravityDirection = - normal (tenés bastantes problemas con esto, pero para arrancar ta bien). gravity = gravityMagnitude * gravityDirection; Luego para rotar el personaje: Quaternion targetDeltaRotation = Quaternion.FromToRotation( transform.up , - gravityDirection ); (definí "deltaRotation" como privado de la clase, slerpSpeed y suavizar también ) deltaRotation = suavizar ? Quaternion.Slerp( deltaRotation , targetDeltaRotation , slerpSpeed * Time.deltaTime ) : targetDeltaRotation; transform.rotation = deltaRotation * transform.rotation; Fijate que la multiplciación de Quaternions no es conmutativa, es decir que Qa * Qb != Qb * Qa . Me pasa todo el rato que algo debería funcionar y simplemente no lo hace porque las puse alrevés. Como dice @Igor no uses Physics.gravity, vas a cambiar la gravedad de todo cuerpo rígido en la escena. Aplicá tu propia gravedad: rigidbody.velocity += gravity * Time.deltaTime;
  5. Hacé un tatetí y presentalo, luego un tetris y presentalo, luego X y presentalo, te vas a dar cuenta que esas preguntas son producto de la falta de resultados. Y ojo que yo soy el peor en dar este consejo, estoy igual que vos, terminé con varios proyectos en la nada, pero un poco intencionalmente, nunca prentendí terminar nada. Más bien lo hice para chocarme con los problemas del desarrollo, esto siempre me interesó más que el juego en sí, incluso te diría que me aburre un poco la parte de desarrollo de juegos.
  6. Hola, abrí la previsualización, en las opciones de importación, si tocás el offset y el modelo sube o baja, entonces funciona. Eso seguramente pase porque se este ajustando la animación de un solo clip (o de algunos sí y de otros no), pero cuando el animator pase a usar el otro clip vuelva a la posición de este último. Osea, la posición del personaje es la misma (la del character controller, esta no cambia), pero si tenés diferencias entre las animaciones te van a aparecer inconsistencias. Por eso siempre es recomendable crear las animaciones respetando el pivot (puede haber excepciones, como el salto por ej) . Estas opciones te deberían dar la posibilidad de "re-calcular" dicho pivot, medirlo desde los pies, usar centro de masa, etc.
  7. No, funciona siempre, incluso para Generic también. Si usas o no root motion no influye en este caso, el clip se ve afectado por el offset siempre. Por ej, si vas a tener un personaje controlado por scripts (sin root motion), para idle, walk y jump (o similar) yo usaría un BakeIntoPose de posición Y basado en Feet. Te soluciona cualquier diferencia de altura automaticamente, haciendo root = posición entre pie izq y der. Si creaste el clip pensando en esto (como debería ser) podés usar Original también, debería dar el mismo resultado (o muy parecido).
  8. Jaja yo tampoco, nunca les había dado bola. Hace poquito tuve que implementar dos nuevas abilidades: ladder climbing y ledge hanging (para este asset). Esto sumado a root motion y blender me hizo sacar varias canas 😵
  9. Hola, tuve que lidiar con esto recientemente. Andá a los clips de animación importados, y modificá el offset del Root Transform Position (Y). Si tu personaje ya está animado y modifica alguna propiedad de su root bone (por ej al hacer un salto), podés forzar que el cambio sea nulo (altura, plano XZ o rotación) con solo poner Bake into pose. Por ej, si aplicás esto a la posición Y, la altura del root será 0 (además podés seleccionar qué referencia usar).
  10. lightbug

    la chorrimanguera

    Excelente el efecto, seguramente sean unos 500 hinge joints. A quién le importa la optimización, estamos en 2020, eso se arregla con más Hardware 😅. Me enteré por este hilo que salió el "The last of us 2" y me sorprendió como en los relacionados de Youtube me aparecían "Esto es tan malo que ni puedo terminarlo" o "esto es basura", o similar. Me fui a metacritic y noté que tiene un 40/100 😮 (de usuarios, obviamente).
  11. Mirá los métodos públicos: https://docs.unity3d.com/ScriptReference/Animator.html Play Plays a state. PlayInFixedTime Plays a state. CrossFade Creates a crossfade from the current state to any other state using normalized times. CrossFadeInFixedTime Creates a crossfade from the current state to any other state using times in seconds. Si te sirve el "Animation" dale pa' lante. Una vez escuché a Ian Dundore (uno de los cracks de optimización en Unity) decir que el componente Animation es simple, versátil, rápido y excelente en muchas situaciones (más de las que uno se espera), que no se lo va a remover de Unity.
  12. Yo tampoco entendí absolutamente nada xD. Mi consejo @nomoregames es que si esto no es un juego terminado (😉), definitivamente lo transformes en una "demo build". Podés incluir textos con instrucciones, que indiquen a los jugadores de qué trata un poco el juego, los controles, qué es lo que hay que hacer, cosas así (todo "in-game"). Esto si querés que tus testers prueben directamente las mecánicas del juego (sin andar con vueltas). Claro que estas ayudas (propias de la "demo build") no te servirían de nada si lo que buscas es lo opuesto, es decir, evaluar la comunicación entre juego y jugador (se me viene "The witness" a la cabeza, y el diseño progresivosde algunos de sus puzzles). Que dicho sea de paso, todos fallamos espectacularmente en esto. Saludos. PD: Ni me tomé el trabajo de leer las instrucciones en el post original, quería ver si esto que dije antes se cumplía o no.
  13. jaja Sí, si usas un Humanoid te va a dar por resultado un esqueleto fácilmente interpretable por otros Animators, un Avatar. En mi caso yo exporto mi esqueleto usando IK (IK Constraints) para pies (+rodillas) y manos (+codos), los pongo a todos no deformables, y los ubico fuera de la jerarquía de huesos "reales". Ej (todos los "IK" están fuera de "Hip"): Si animás los IK en Blender, en Unity no habrá problemas (nunca tuve problemas en Humanoid ni en Generic). Eso sí, no existirá relación directa entre IK de Blender e IK de Mecanim, ya que este último los genera usando el Avatar (Por ej: de hombro izq a mano izq). El resto (desde mi experiencia) es hacer Matches tratando de coordinar un IK con tal objeto en el mundo, o simplemente modificar el peso y valor del IK en cuestión. No podría ayudarte mucho con esto, tengo "Based Animation" activada en el tab Animation de las opciones de exportación 🤷‍♂️.
  14. Podrías considerar que el juego se encuentra en el estado "menú" o "UI" (cuando abrís tu menú), y en dicho estado simplemente no procesar el raycast selector de objetos. Ayudaría si subís el código encargado de seleccionar objetos. El graphic raycaster opera con UI: Graphic Raycaster El Graphic Raycaster es utilizado para raycast (emitir rayos) contra un Canvas. El Raycaster mira todos los Gráficos en el canvas y determina si uno de ellos ha sido golpeado. Si seleccionas objetos 3D usando Physics.Raycast, no estoy seguro de que este puede ser bloqueado (como un raycast de UI).
UnitySpain © Todos los derechos reservados 2020
×
×
  • Create New...