jairogarcíarincón
Movimiento horizontal
Para poder mover al Jugador en horizontal con las teclas (más adelante haremos que salte), vamos a necesitar un script que capture el movimiento de las teclas y aplique dicho movimiento, multiplicado por una cierta velocidad, al Rigidbody 2D de nuestro Jugador.
Además, cuando el Jugador se mueva hacia la izquierda, debemos invertir el sprite de modo que mire hacia ese lado, razón por la cual debemos capturar su componente Sprite Renderer y cambiar la propiedad Flip en el eje X en función de si se está moviendo hacia la izquierda (movimiento negativo) o hacia la derecha (movimiento positivo).
Genera un nuevo script llamado Jugador dentro de Assets > Scripts con el siguiente código y asóciaselo al objeto Jugador:
Si ahora le ajustas una Velocidad entre 1 y 2 al Jugador en su Inspector window y ejecutas el juego, se debería mover y girar a izquierda y derecha.
Salto
Para que el Jugador pueda saltar, bastaría con aplicar una fuerza vertical a su Rigidbody 2D cuando se pulse una tecla, pero en ese caso podría seguir pulsando la tecla de salto y hacer que el Jugador volara.
Como esa no es la intención, debemos asegurarnos además de que además de pulsar la tecla, el Jugador está en el suelo.
Lo primero que debemos hacer es seleccionar el tilemap Suelo y crear y a añadirle una nueva etiqueta o tag llamada Suelo.
A continuación, modifica el script del Jugador de forma que incluya un booleano que cambie de true a false en función de si está en el suelo o no, utilizando para ello el método OnCollisionEnter2D. Estudia bien los comentarios del código siguiente para comprenderlo bien:
Si ahora aplicas al Jugador una Potencia de Salto de unos 200 en su Inspector window y ejecutas el juego, verás que el Jugador salta, pero solo cuando está en el suelo. Para evitar que el sprite rote sobre si mismo al chocar con alguna esquina, recuerda bloquear la rotación marcando la propiedad Constraints > Freeze Rotation Z del componente Rigidbody2D del Jugador:
Publicado el 03 de Febrero de 2025
unity2danimación