¿Cómo crear un sistema de economía virtual en tu videojuego?
Desarrollar un videojuego completo implica dominar múltiples aspectos, y uno de los más cruciales es un sistema de economía virtual. Este tipo de sistemas es común en los juegos de rol, donde las monedas recogidas se convierten en un ingrediente esencial para avanzar. Ya sea dispersa en la escena, escondidas en cofres, o como recompensa por derrotar enemigos, esas pequeñas monedas doradas no solo enriquecen la experiencia del juego, sino que también añaden un reto más para los jugadores. Aquí entenderás cómo implementar este sistema y hacer de tu videojuego una experiencia aún más inmersiva.
¿Cómo iniciar con la creación de una moneda en el juego?
Imagina volver a nuestra primera clase, revisitar los sprites y encontrar el elemento perfecto para representar nuestra moneda o, en este caso, una gema que cumplirá esta función. Al elegir los sprites, volvemos a aquellos recursos fundamentales que almacenan infinidad de posibilidades gráficas. Sin embargo, lo esencial es tener un "sorting layer" adecuado para que siempre quede en la vista del jugador. Además, se utiliza un "circle collider" para definir la zona de contacto necesaria para recoger la moneda.
// Ejemplo de código para añadir un collider a una monedaCircleCollider2D collider = gameObject.AddComponent<CircleCollider2D>();collider.isTrigger=true;
¿Qué sigue después de crear la moneda?
Una vez tengas tu moneda lista, es momento de trabajar en la interfaz gráfica. El "canvas" en Unity puede albergar la imagen de la moneda y el contador que muestre cuántas de estas ha recogido el jugador. Un elemento de UI "Image" junto a un texto que detalles el número de monedas obtenidas son la base del Heads-Up Display (HUD).
¿Cómo se gestiona el conteo de monedas?
Para un control eficaz de la acumulación de monedas, es necesario desarrollar dos scripts: uno para las monedas individuales y otro para su manejo general. Este último script puede garantizar que las monedas recolectadas permanezcan registradas aún después de cerrar y abrir el juego, usando Player Prefs para la persistencia de datos.
// Ejemplo de gestión de monedas en el juegopublicclassCoinsManager:MonoBehaviour{publicText moneyText;public int currentGold;voidStart(){if(PlayerPrefs.HasKey("CurrentGold")){ currentGold =PlayerPrefs.GetInt("CurrentGold");}else{ currentGold =0;PlayerPrefs.SetInt("CurrentGold", currentGold);}UpdateMoneyText();}publicvoidAddMoney(int amount){ currentGold += amount;PlayerPrefs.SetInt("CurrentGold", currentGold);UpdateMoneyText();}voidUpdateMoneyText(){ moneyText.text= currentGold.ToString();}}
¿Cómo interactúa el jugador con las monedas?
El momento en que la moneda detecta al jugador mediante un "trigger" es cuando ocurre la magia. El script en la moneda se asegura de sumar su valor al total del jugador y luego desaparecer, simulando su recolección.
Empieza a construir un camino de monedas como una guía en el juego, y considera la organización de estos objetos para un manejo óptimo.
En última instancia, integrar pruebas y ajustar los detalles hacen toda la diferencia. Diseña una experiencia completa para el jugador que involucre la interacción con monedas, llevando su sistema de economía a un nivel más avanzado e interesante para quien explore tu mundo virtual.
La verdad que me encanto este curso, la verdad que creo que fue uno de los mejores que vi en toda la vida!!! Me gustaría seguir aprendiendo mucho mas de Unity y me gustaría seguir aprendiendo con este Proyecto, estaría muy bueno que en un proximo curso agregamos un sistema de items, un sistema de (Magia) usando el mouse, un sistema de base de datos y para darle un broche de oro como hacerlo multiplayer!!!!
Está listo el examen del curso! te invito a tomarlo y que nos compartas ese feedback por twitter =)
Apoyo la moción de que nos enseñen a hacer multiplayer :,v
Les comparto un poco de mi resultado.
Realmente agradecido con el proyecto, se aprendió bastante, en especial de lógica de programación. Juan Gomila es un profesor 5 estrellas.
Está listo el examen del curso! te invito a tomarlo Alejo!
Nos descuidamos 1 minuto y el profe ya se creo 3 managers xD
Gran curso y gran profesor 🎮 💚
No se porque empiezo en la última clase.
Desde dónde nos ve, puede ser un bug pero esta sí es la última clase
Excelente curso 5 Estrellas
Me Ayudo muchísimo este curso, un genio el profesor.
Excelente curso aprendí mucho
Exelente curso nos entrego de una manera muy bien explicadas las bases de un sistema rpg clasico, animaciones, controles ataques, npc,monedas, etc
5 estrellas a este curso
¡Qué pesado Ricardo! Jajaja grandioso curso, me encantó, posiblemente el mejor que he tomado
Genial curso!!!
Definitivamente el límite es nuestra imaginación.
Está listo el examen del curso! te invito a tomarlo y que nos compartas ese feedback por twitter Albertoo =)
Un curso muy bien construido, sin palabras la forma de enseñar es impecable, gracias Platzi.
Más cursos con Gomila!, por favor!
Buenisimo el curso! La verdad aprendí un montón de mecanicas que son super utiles.
Hay algunas cosas a mejorar o que faltaron, pero en definitiva fue super positivo el balance, super contento.
Espero con ansias algún otro curso de este estilo más avanzado!
Muchas gracias!
Gracias por este mega curso!
Un pequeño aporte, cuánto no sabes si ya se ha creado o no un PlayerPrefs en lugar de utilizar una condicional con el método HasKey, puedes igualar la variable al getter del playerPrefs y poner un valor por default en caso de que no exista.
currentGold =PlayerPrefs.GetInt(goldkey,0);
Este código se encarga de crear el PlayerPrefs de tipo INT con el nombre CurrentGold y con valor en 0, pero si este playerPrefs ya existe directamente iguala la variable currentGold al valor de este.
¡Excelente este curso! Sería maravilloso si sacarán un curso MMORPG 3D. Qué vacilón con ricardo jajaja