3dpoder

Que no avance hasta haber rotado Unity

  • #1
    Jhonatan00_00 está desconectado

    Usuario completo Avatar de Jhonatan00_00


    Que no avance hasta haber rotado Unity

    Buenas noches, hace tiempo que solucioné este problema pero de una forma un poco chapucera. El problema a resolver es que el personaje debe de rotar sobre su propio eje y después avanzar cuando este posicionado en el angulo correcto, no empezar a avanzar a la vez que rota porque lo que hace es rotar como un coche, haciendo una circunferencia.

    La solución que hice fué crear un pivote el cual hacia el movimiento del personaje y el personaje unicamente rotaba, por lo que podías moverte hacia donde quisieras mientras el personaje rotaba buscando esa direccion, pero al final se notaba qué cuando aún no habia terminado de posicionarse ya estaba andando, osea qué lo hacía de lado durante un momento y no quedaba bien.

    Pregunté esto en algún tema del foro, pero no lo encuentro para volver a preguntar así que lo pregunto por aquí:
    ¿Cómo rotamos a un personaje sobre su propio eje para qué avance una vez está posiciónado? Un saludo.


  • #2
    Jhonatan00_00 está desconectado

    Usuario completo Avatar de Jhonatan00_00


    Que no avance hasta haber rotado Unity

    Buenas tardes, estoy viendo que la gente usa mucho el componente Character Controller para mover a sus personajes y puede que vayan por ahí los tiros, pero estoy testeando con el y no hace nada del otro mundo, tan solo detecta colisiones y dice la inclinación máxima qué el personaje puede subir, tonterias así que puedes hacer con un poco de programación.
    ¿Sabeis si de alguna manera se puede conseguir lo que busco por medio del Character Controller?
    Un saludo.


  • #3
    Jhonatan00_00 está desconectado

    Usuario completo Avatar de Jhonatan00_00


    Que no avance hasta haber rotado Unity

    Nada, sigo con el mismo problema. He terminado por hacer de todo:
    – Con el character controller aparte de ser mas complicado programar que se mueva al final se mueve como si fuese un pivote sobre el que rota el personaje.
    – Programando un pivote por tu cuenta el movimiento queda antinatural aunque sea más fácil moverlo.
    – Haciendo que rote más rápido para que no de tiempo a que avance parece un trompo.
    – Programando que no comience a caminar hasta que haya alcanzado el angulo de destino se queda pillado en algunos ángulos y se para en seco.

    Si jugáis por ejemplo, al videojuego dead space 2 (que me lo estoy pasando ahora por cierto), veréis como podéis rotar al personaje hacia donde quieras que no empezara a avanzar hasta que no se haya recolocado en su lugar, pero sin importar lo despacio que lo hagas girar, hasta que no tiene su posición no comienza a andar. ¿cómo narices lo hacen? Es que no hay ni tutoriales en internet, todo el mundo hace los juegos igual.


  • #4
    Juani está desconectado

    Nivel Héroe Avatar de Juani


    Que no avance hasta haber rotado Unity

    Creo que ya te lo comenté, tienes que, anular el movimiento cuando aplicas la rotación, no he tocado c# y no sé exactamente cuáles son las funciones, pero la forma de hacerlo es la misma. Cuando aplicas la rotación el personaje debe pararse, ejemplo: el personaje avanza en el eje x=10, los valores para el Vector movimiento serian (10;0;0), el personaje rota en su propio eje z=1º, valores del Vector rotación (0;0;1), la letra a pulsada activa la rotación, la sentencia sería.

    If a (está pulsada)entonces:
    Personaje.aplicarotación (0;0;1), personaje.aplicamovimiento (-10;0;0), movimiento negativo para contrarrestar el movimiento positivo con lo que se queda a cero.


  • #5
    Jhonatan00_00 está desconectado

    Usuario completo Avatar de Jhonatan00_00


    Que no avance hasta haber rotado Unity

    En otro tema (que no encuentro y por eso abrí este) comenté el mismo problema pero no me dijiste exactamente que hiciera eso, de todas formas si hago que en lugar de avanzar retroceda mientras rota lo que va a hacer es ir hacia atrás no quedarse en su lugar, además ¿cómo le dices que, avance cuando se haya colocado en la posición correcta? Si le dices que, avance solo cuando la rotación sea igual a la posición correcta solo avanzará cuando está exactamente en ese angulo que le has indicado y tampoco funciona.

    Voy a probar a ver qué sale y te digo. Saludos.


  • #6
    Jhonatan00_00 está desconectado

    Usuario completo Avatar de Jhonatan00_00


    Que no avance hasta haber rotado Unity

    Buenas tardes, he estado dándole vueltas y mas vueltas y haciendo pruebas y la única solución posible que funcione es la que había hecho en un inicio, creando un pivote que mueva al personaje mientras gira. Además he estado observando videojuegos profesionales y es así como lo hacen porque se mueve igual. El problema está en que debes de saber dónde debe de estar el eje de rotación del personaje para que rote sobre el pivote porque si no lo hace de una forma muy artificial y es complicado.

    Cuando uno está intentando hacer algo profesional se ve solo, porque la gente lo único que sabe hacer son cosas muy básicas, casi siempre en 2d o descargando directamente script y modelados ya hechos que los aplicas y listo, nada profesional. Cuando empiezas a hacer cosas de verdad es cuando te das cuenta que casi nadie sabe.

    A ver si avanzo más rápido ya porque he perdido demasiado tiempo en detalles, un saludo.


  • Ver más sobre el tema y los comentarios en el foro