Muy buen curso! Se recomienda ver el curso de programación básica o saber algoritmos básicos antes de incursionar en módulos mas avanzados de programación como este, para evitar la confusión.
El personaje y el controlador
Introducción: De la idea al desarrollo
Estructura de carpetas en Unity
Assets, Game Objects y Sprite Atlas
Animaciones desde un sprite map
Animation Controller y Transiciones
Plataformas y gravedad
Física en Unity
El script de control
Programando funciones en C# y Unity: Jump
Detectar el suelo con Raycast
Herramientas de debugging visual
Cambiar las animaciones según los estados
Reto: Terminando nuestras animaciones
Solución del reto
Hacer que el personaje camine
El manager del videojuego
Cómo funciona el Game Manager
El Singleton
El modo de juego
Input manager y juegos multiplataforma
Corrección del Bug del salto
La zona de muerte
Reiniciar la partida
Corrigiendo los bugs al reiniciar nuestro juego
Diseño procedural de niveles 2D
El diseño de niveles a mano
Configurando nuestros assets para el diseño procedural
Generación procedural de niveles
Creando la zona que eliminará bloques del nivel excedentes
Añadir un nuevo bloque de forma aleatoria
La cámara que sigue al jugador
Destrucción de bloques antiguos
Terminando de programar la destrucción de bloques antiguos
Solucionando el salto de la cámara al reiniciar el juego
HUD, menús y gameplay
El canvas en Unity
Uso de botones para crear un menú
La lógica de los menús
Ejercicio: Preparando el menú del juego
Programando el menú del juego
Los coleccionables del juego
Actualizar UI de coleccionables
Iniciando con pociones y maná
Pociones de vida y maná
Programando las barras de vida y maná
Calculando los puntajes con la distancia y el tiempo de juego
La lógica del maná
Enemigos y dificultad
Plataformas móviles
Iniciar movimiento de la plataforma con trigger
Enemigos móviles
Enemigos móviles: preparando nuestro enemigo para girar
Enemigos móviles: programando que gire al chocar
Arreglando el collider de nuestra roca
Programando la condición de muerte del personaje
Añadiendo música de fondo a nuestro videojuego
Añadiendo efectos de sonido y cierre del curso
No tienes acceso a esta clase
¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera
Aportes 19
Preguntas 1
Muy buen curso! Se recomienda ver el curso de programación básica o saber algoritmos básicos antes de incursionar en módulos mas avanzados de programación como este, para evitar la confusión.
Si presentan el problema de agregar el superjump al input manager y este no reacciona, deben fijarse que en los select del final (type, axix, joy num) tengan estos valores:
Type: Key or Mouse Button
Axis: X axis
Joy Num: Get Motion from all Joy
Esto hace que se detecten los botones del teclado y mouse.
Yo utilice la mana para hacer que el personaje pudiera ir a mayor velocidad apretando Shift Izquierdo, siempre y cuando el mana sea mayor a cero.
En las ultimas instancias se convierte en confusión absoluta lograr entender la lógica y las explicaciones del profesor. 😦
El codigo tiene un error que no se noto porque usaste dos botones distintos, pero te das cuenta si tocas los dos al mismo tiempo, que aunque no tengas mana va a saltar el doble. Para solucionar este problema tenes que poner un else entre la condicion del supersalto y la del salto normal.
para practicar también hice un sistema de daño
hice una mecanica de corren y para la gestion de mana
Algo que tuve que hacer fue limitar el máximo en el eje “Y” a cierto valor dado que, al contar en mi versión con plataformas que te dan un rebote, permitían al jugador saltar infinitamente y salir de la cámara sin ninguna referencia. La solución que aplique fue colocar una variable de “MAX_Y_POSITION” y luego ponerle un máximo con la siguiente línea de codigo:
public float
MAX_Y_POSITION;
if (this.transform.position.y >= MAX_Y_POSITION)
{
playerRigidBody.position = new Vector2(transform.position.x, MAX_Y_POSITION);
}
Esta solución podría ser cambiada en los niveles con las diferentes opciones de “collider2d” con las que contamos sin embargo si deseamos cambiar la altura a todo el juego tendríamos que cambiar los prefabs o límites uno por uno y con esa línea de codigo lo que ahorramos en tiempo de diseño de niveles es bastante 😄
El cáculo de jumpForceFactor mejor colocarlo dentro del ámbito de la condición IsTouchingTheGround().
Por cierto, IsTouchingTheGround se puede llegar a calcular dos veces en el método Update. Mejor refactorizar la dupla Update()<->Jump().
Lo que hice yo fue permitir un doble salto dependiendo del mana
void Jump() {
//jump is a impulse force :D
if (IsTouchingFloor() && isInGame) {
rigidBody.AddForce(Vector2.up * jumpForce, ForceMode2D.Impulse);
} else if (!IsTouchingFloor() && isInGame && manaPoints > SUPERJUMP_COST) {
rigidBody.AddForce(Vector2.up * jumpForce, ForceMode2D.Impulse);
manaPoints -= SUPERJUMP_COST;
}
}
https://imgur.com/gallery/02kzNgv
Avances hasta el momento:
Hola que tal saben porque se duplica el valor SUPERJUMP_COST?
Superjump entramos a Edit > Project Settings > Input
y aumentamos la cantidad de entradas con la opción Size
.
Para abrir la pestaña de animaciones entramos a Window > Animation > Animation
.
El super salto debe ejecutarse solo si está tocando el suelo y el estado del juego es inGame
< void Jump (bool superJump)
{
if (IsTouchingTheGround() && GameManager.sharedInstance.currentGameState == GameState.inGame)
{
float jumpForceFactor = jumpForce;
if(superJump) {
manaPoints -= SUPERJUMP_COST;
jumpForceFactor = jumpForce*SUPERJUMP_FORCE;
}
rb.AddForce(Vector2.up * jumpForceFactor, ForceMode2D.Impulse);
}
}>
Muy útil la clase
Muchas gracias al profesor al agregar esa lógica de añadir una variable la cual se modifica según el estado del condicional, me parece un razonamiento que puede ayudar a solucionar varios tipos de problemas que conllevan en repetición de código.
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?