¿Como os planteariais crear este movimiento en Unity?

UnLiMiTeD

A ver, estoy preparando un proyecto de fin de curso en Unity y estoy pensando en hacer un juego de puzzle similar al que pondre ahora en el video. De momento el comportamiento lo he hecho mediante codigo, colocando emptys en el cubo y con esta corrutina en cada eje que quiero mover.

IEnumerator MoveUp()
{
    for (int i = 0; i < (90 / stepV); i++)
    {
        player.transform.RotateAround(up.transform.position, Vector3.right, stepV);
        yield return new WaitForSeconds(speed);
    }
    center.transform.position = player.transform.position;
    input = true;
}

Quitando la gravedad en el rigibody el movimiento es justo lo que busco, giros perfectos y sin moverse de la "cuadricula" que yo quiero. El problema lo tengo cuando estoy pensando en como hacer interactuar el cubo con el entorno, como por ejemplo, "escalar" un muro del mismo tamaño que el. Creo que lo entendereis mucho mejor cuando veais el juego en el que me estoy basando.

¿Creeis que lo ha hecho mediante fisica o mediante animaciones?, ¿alguien por aqui ha hecho algo similar alguna vez?.

sergilazaro

Para algo tan estricto y tile-based como esto, mejor no utilizar físicas. Entendiendo físicas como utilizar fuerzas, impulsos, gravedad, etc. de PhysX o similares. Tiene sentido utilizar la información de colisiones pero nada más, el resto tendría que ser discreto, al estilo de "estoy en el tile (x,y), si quiero ir a la derecha miro si el (x+1,y) está ocupado, entonces decido qué tipo de movimiento se tiene que hacer, y empezar la animación".

sergilazaro

Para referencia si te interesa, hace 4 años hice un minijuego para la ludum dare que era 3D tile-based con animaciones, quizás te ayuda en algo:

Juego: https://sergilazaro.itch.io/duals
Source code: https://github.com/sergilazaro/duals_ld31

1 2 respuestas
kesada7

#3 Oye pues está muy pulido el control y el movimiento para una jam! Yo le echaré un ojo por curiosidad ver como está implementado. Eso si, el pathfinding está muy OP en el último nivel me lo he pasado solo haciendo click en la ficha negra xDD

1 respuesta
sergilazaro

#4 si siempre me pasa lo mismo en las jams, que lo que es diseño de niveles me falla porque no tengo práctica y no me da tiempo de hacer nada interesante XD

Creo que el pathfinding fue planchado de algun otro sitio, era el A* de toda la vida, si no me equivoco era el pseudocódigo de wikipedia adaptado a c# XD

Czhincksx

Pues... Para escalar un muro lo que haría sería lo mismo que has hecho para andar, solo que antes de andar tienes que sacar información de la cuadrícula para saber si vas a avanzar sobre plano, vas a escalar o vas a caer. Para escalar tienes que rotar 180 grados y ya te lo deja como quieres.

Como te dicen, yo tampoco usaría las físicas para esto. Incluso para caer usaría algún tweener.

UnLiMiTeD

#3 Mola!

Al final lo estoy sacando adelante:

https://i.gyazo.com/58cc2c1abaa5d970db78d0040cb29a9e.mp4

https://i.gyazo.com/c62295db917bcd5a7a3677216b43221f.mp4

Lo estoy haciendo mediante el codigo que puse arriba, pero con cambios, si teneis curiosidad pues os lo dejo por aqui. En vez de usar 4 teclas diferentes para cada direccion ( adelante, atras, izquierda, derecha ) uso una unica tecla y los cambios de direccion se realizan rotando el cubo hacia donde quieres dirigirte. De todas formas cuando el proyecto comience a tomar forma, seguramente abra un hilo aqui para ir contando como lo voy desarrollando.

Llevo 1 mes y medio aprendiendo unity/programacion, asi que no espereis grandes cosas xD

PD: Como se ponen mp4 en el foro?

1
sergilazaro

Pues está bastante bien, el movimiento se ve perfecto. Por llevar poco tiempo te está quedando super bien!

UnLiMiTeD

Consegui el "todo en 1" !!, Forward, Up y Down con la misma tecla. Lo hice usando 3 booleans. isWalking,isFalling,isJumping.

Supongo que lo mejor es hacerlo mediante "estados" pero aun no tengo claro como funcionan, le echare un vistazo esta semana a ver, pero de momento al menos la cosa va bien con lo que hice.

https://i.gyazo.com/2d9f1f74ad5e1933e1afc717f38aa2ef.mp4

Eso si, tiene una limitacion importante, lo que es para subir es para subir, y no se puede bajar, y lo que es para bajar no se puede subir. Las acciones distintas de la tecla W ( la de movimiento ) se activa o desactiva con los colliders que haya en el suelo, asi que ... en el futuro habra que ver como solucionar eso. De momento mi diseño es lineal, o sea, el jugador no debe/puede dar la vuelta, asi que no es un problema.

Usuarios habituales

  • UnLiMiTeD
  • sergilazaro
  • Czhincksx
  • kesada7