¿Qué es o para qué sirve la barra de maná? Nunca la había escuchado 😅.
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
En el desarrollo de videojuegos, la gestión de atributos del personaje como la vida y el maná es fundamental para equilibrar el juego y mantener el interés del jugador. Implementar estos elementos requiere una cuidadosa planificación y programación para asegurar que el jugador se mantenga dentro de límites realistas y alcanzables. En esta guía, te mostramos cómo crear scripts que gestionen de forma efectiva los niveles de vida y maná en un videojuego.
La base para gestionar la vida y el maná de un personaje comienza con la declaración de variables y constantes en el script del jugador. Estas servirán tanto para rastrear el estado actual del personaje como para mantener sus valores dentro de límites predefinidos.
private int healthPoints, manaPoints;
public const int INITIAL_HEALTH = 100;
public const int INITIAL_MANA = 15;
public const int MAX_HEALTH = 200;
public const int MAX_MANA = 30;
public const int MIN_HEALTH = 10;
public const int MIN_MANA = 0;
En el método start
del juego, los puntos de vida y maná deben establecerse a los valores iniciales definidos por las constantes.
void Start() {
healthPoints = INITIAL_HEALTH;
manaPoints = INITIAL_MANA;
}
Para que el jugador pueda recolectar y acumular puntos de vida y maná, debemos implementar métodos específicos. Estos métodos incrementan los puntos actuales, pero aseguran no sobrepasar los límites máximos establecidos.
public void CollectHealth(int points) {
this.healthPoints += points;
if (this.healthPoints > MAX_HEALTH) {
this.healthPoints = MAX_HEALTH;
}
}
public void CollectMana(int points) {
this.manaPoints += points;
if (this.manaPoints > MAX_MANA) {
this.manaPoints = MAX_MANA;
}
}
Es crucial para la visualización en la interfaz gráfica de usuario (GUI) que los valores actuales de vida y maná puedan ser obtenidos. Implementamos métodos que devuelven estos valores para ser representados mediante barras gráficas.
public int GetHealth() {
return healthPoints;
}
public int GetMana() {
return manaPoints;
}
Establecer y respetar los límites máximos y mínimos para los atributos de un jugador es imprescindible para mantener un juego equilibrado y justo. Sin estos límites, los jugadores podrían acumular vida o maná infinitamente, lo cual desbalancearía la dificultad y sacaría al juego de su propósito original. Esto asegura que todos los jugadores jueguen bajo las mismas condiciones y desafíos.
Con estas directrices, puedes crear un sistema robusto y equilibrado que ofrezca una experiencia de juego desafiante y satisfactoria. Además, fomenta a los jugadores a gestionar estratégicamente sus recursos, añadiendo profundidad al juego. ¡Sigue explorando y mejorando tus habilidades de scripting en videojuegos!
Aportes 10
Preguntas 1
¿Qué es o para qué sirve la barra de maná? Nunca la había escuchado 😅.
Al fin logre subir un gif
this.manaPoints = this.manaPoints >= MAX_MANA
? MAX_MANA : this.manaPoints + points;
Yo prefiero hacerlo así:
public void CollectMana(int points)
{
int totalPoints = manaPoints + points;
if (totalPoints >= MAX_HEALTH)
{
manaPoints = MAX_HEALTH;
}
else
{
manaPoints = totalPoints;
}
}
Así siempre me aseguro que el valor que se asigne no sea mayor al máximo permitido y no sumo 2 veces el valor para hacer la comparación y asignarlo.
CollectMana 
{
this.initial = initial;
this.max = max;
this.min = min;
}
}
Quedaría así al momento de usarlos en el PlayerController:
public Stat healthStat = new Stat(100, 200, 10);
public Stat manaStat = new Stat(15, 30, 0);
Luego creé una función que sirva como base para aumentar los puntos a cualquier collectable, recibe los datos y regresa los nuevos puntos, si es que cambiaron
public int CollectPoints(int points,int current, Stat stat)
{
int newPoints = current + points;
if (newPoints > stat.max) return current;
return newPoints;
}
public void CollectHealth(int points) => healthPoints = CollectPoints(points, healthPoints, healthStat);
public void CollectMana(int points) => manaPoints = CollectPoints(points, manaPoints, manaStat);
2021 ❤️
De maravilla.🤩
Excelente!!
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?