Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - al_aranda

#1
Muchísimas gracias Adngel por tan detallada respuesta! Entonces sería posible crear los mismos controles que en el tutorial (WASD y mouse para apuntar) pero lanzando diferentes animaciones según si el personaje va hacia adelante, hacia atrás o hacia los lados no? La verdad que cuando vi ese tutorial, no me plantee el que mi jugador fuera a tener piernas y que tal hecho conllevaría todo este problema... Entonces vamos por pasos. Primero voy a intentar hacer lo del Blend Tree. Con esto 
playerRigidbody.MovePosition (transform.position + movement);
ya tendríamos el vector de dirección, y ahora haría falta crear otro Vector que será el que guarde la posición hacia la cuál esta mirando el personaje (que será la posición del mouse), no?
#2
he hecho lo siguiente. El resultado se parece más a lo que buscaba, pero no me acaba de convencer...
 public float speed = 6f;
    Animator animPlayer;    void Awake()
    {
        animPlayer = GetComponent<Animator>();
    }
    
    // Update is called once per frame
    void Update () {        float h = Input.GetAxisRaw("Horizontal");
        float v = Input.GetAxisRaw("Vertical");
        Move();
        Animating(h, v);
    }    void Move()
    {
        
        if (Input.GetKey(KeyCode.W))
        {
            transform.Translate(0f, 0f, speed * Time.deltaTime, Space.World);
            transform.eulerAngles = new Vector3(0, 0, 0);
        }        if (Input.GetKey(KeyCode.S))
        {
            transform.Translate(0f, 0f, -speed * Time.deltaTime, Space.World);
            transform.eulerAngles = new Vector3(0, 180f, 0);
        }        if (Input.GetKey(KeyCode.A))
        {
            transform.Translate(-speed * Time.deltaTime, 0f, 0f, Space.World);
            transform.eulerAngles = new Vector3(0, -90f, 0);
        }        if (Input.GetKey(KeyCode.D))
        {
            transform.Translate(speed * Time.deltaTime, 0f, 0f, Space.World);
            transform.eulerAngles = new Vector3(0, 90f, 0);
        }
    }    void Animating(float h, float v)
    {
        bool idle = ((h == 0) && (v == 0));
        animPlayer.SetBool("IsMoving", !idle);
    }
#3
en este caso deberia usar Quaternions?
#4
vale, pensé en eso de los grados, pero no sabía si sería una forma óptima. Entonces lo suyo seria obtener los inputs "Horizontal" y "Vertical" y a partir de ahi crear una serie de condicionales del estilo: si apreto la tecla A entonces obtener posicion del personaje y rotarlo -90º. Pero entonces habría que hacer tantos condicionales como opciones posibles no? porque tu puedes rotar desde forward a left, pero tambien desde forward a back, o desde back a right, etc...
#5
Imagínate que la cámara no está por detrás del personaje, sino encima (no exactamente de forma perpendicular a éste, pero arriba) de manera que se verá buena parte del escenario. La cámara solo seguirá al personaje en traslación, no en rotación, de manera que sólo rotaría el personaje. Sería un estilo como ésto https://www.youtube.com/watch?v=WDUORDhHCm8 Gracias!
#6
Muchas gracias por responder. Pero se podrían activar distintas animaciones según si el personaje se mueve hacia delante, hacia atrás o hacia los lados? Es lo que más me gustaría conseguir, pero la verdad, por el tiempo que tengo y por mis conocimientos, lo veo algo super chungo... Habría alguna función para eso?De no ser posible eso (yo de hecho ya lo había descartado) me gustaría poder mover a mi personaje con las teclas WASD pero siempre con la animación de correr hacia adelante, y que según la tecla que pulses, pues el personaje rote hacia esa dirección y siga desplazándose. Es que no sé si me explico con esta última parte.Muchas gracias!
#7
Hola a todo el mundo! Éste es mi primer post en este foro, y después de llevar un rato mirando posts similares (los hay) no he encontrado nada con lo que poder solucionar mi problema 100%. Hace unos meses decidí escoger como tema del Proyecto Final de Grado la creación de un Videojuego (en que momento jeje). He diseñado, modelado, rigueado y animado los personajes, y ahora es momento de pelearme con Unity (es la primera vez que hago un proyecto de desarrollo de videojuegos, lo mío es más la parte de diseño y animación 3D). El videojuego será un shooter en 3a persona muy sencillo. He conseguido poder mover y rotar al personaje con las teclas WASD y el mouse, tal y como he visto en uno de los tutoriales oficiales de Unity
).">
 
Pues bien, el problema es que en el tutorial se utilitza un muñeco sin piernas, con lo cuál éste puede ir en cualquier dirección sin importar que la animación de moverse se vea afectada. En mi caso, el personaje tiene piernas, con lo cuál al moverse hacia adelante no hay ningún problema, pero al moverse hacia atrás o hacia los lados, pues claro, se sigue reproduciendo la animación de correr (hacia adelante) y queda un poco mal. Llegados a este punto, y después de investigar, he decidido que no usaré el mouse para rotar el personaje, y que solo usaré las teclas WASD. De este modo lo que persigo es poder mover al personaje de manera que este siempre se "desplace" hacia adelante, es decir, que si estás apretando W y de repente quieres ir hacia atrás apretando S, pues lo que quiero es que el personaje rote 180º y vaya hacia atrás (no sé si me explico). De momento he sido capaz de poder mover el personaje (W y S) y de rotarlo (A y D), pero claro, el problema es que si aprieto estas últimas teclas, el personaje rota sobre su propio pívote de manera infinita hasta que no se suelta la tecla, y lo que yo quiero es que el personaje rote en dirección a la tecla que se ha presionado. Por ejemplo, que se dirija hacia arriba si se presiona W, hacia la izquierda si se presiona A, etc., y que si se sigue presionando esa tecla, se desplace en esa dirección... Como ejemplo sería un movimiento de desplazamiento estilo Mario 64, pero en vez de usar Joystick pues solo las teclas WASD. Sé que es un poco rollo todo lo que acabo de explicar, y no sé si se ha entendido. Muchas gracias de antemano y perdón por si hay realmente algún post donde se explique ésto (no he sido capaz de encontrarlo).