Usuario completo
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.
Usuario completo
Que no avance hasta haber rotado Unity
¿Sabeis si de alguna manera se puede conseguir lo que busco por medio del Character Controller?
Un saludo.
Usuario completo
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.
Nivel Héroe
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.
Agradecimientos – 1 Gracias
Usuario completo
Que no avance hasta haber rotado Unity
Voy a probar a ver qué sale y te digo. Saludos.
Usuario completo
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.