Cambiar el nombre luego de hacer animaciones, puede provocar que se pierdan las referencias de las mismas. Me paso 😦
Introducción
Game Design del juego
La estructura y assets de un proyecto en Unity
Convirtiendo nuestros assets en Tiles
Tilemaps y creación del escenario
Bonus: FastForward de la creación del escenario, sorting layers y creación de colliders
Acá encontrarás los archivos de este curso
Personaje principal: Movimiento y Animaciones
El jugador y el movimiento
Creando nuestra primera animación
Creando el grafo de animaciones
Usando un árbol de animaciones
Mostrando la solución del desafío e implementando transición entre blended trees
Programando una cámara que siga al jugador
Corrección del bug gráfico
límites del escenario, rigid bodies
Ejercicio: diseño de interiores
Escenarios Avanzados
Transiciones entre escenas
Mantener Player y Camera entre escenas
Spawning Points: programando que el jugador y la cámara aparezcan en el lugar correcto al cambiar de escena
Agregando Identificadores a nuestros Spawning Points para controlar mejor el flujo de nuestro juego
Enemigos Avanzados
Creando nuestro enemigo
Programando las físicas y el patrullaje del enemigo
Generando movimiento completamente aleatorio
Programando el ataque del enemigo
Crear Manager de Health del Player
Crear armas
Programando el ataque del Player con arma
Mover la espada al caminar
Creando el ataque con espada
Ejecutando el ataque con un botón
Movimiento en diagonal
Optimizando nuestro player controller
Ataque mejorado
Uso de partículas
Añadir el daño del enemigo en batalla
Programando los contadores de vida del enemigo
Colocando más info de UI en pantalla
Script de la vida
Personaje principal avanzado
Añadir el daño del personaje (ejercicio)
Sistema de puntos de experiencia para nuestro personaje principal
Level Up!
Level Up! Defensa y Reto Final del Módulo: Stats de los enemigos
Creando un NPC
Limitar el movimiento de nuestro NPC
Creando una pantalla de diálogos para nuestro RPG
El diálogo del NPC
Múltiples líneas de diálogo
Parar el NPC durante el diálogo
Parar el personaje durante el diálogo
Quests
La estructura de una quest
Quest 1: Ir a un lugar
Quest 2: Encontrar un objeto
Quest 3: Matar enemigos
Revisión de bugs
Mantener la cámara dentro del escenario
El problema al cambiar de escena
Audio
Agregando SFX a nuestro videojuego
Agregando música a nuestro videojuego
Ajustar volúmen del audio de cada uno de los efectos de sonido
Creando un VolumeManager
Agregando economía a nuestro juego y cierre
No tienes acceso a esta clase
¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera
El sistema de partículas de Unity es una herramienta poderosa y versátil que permite crear efectos visuales impresionantes en videojuegos, desde explosiones hasta efectos de humo y fuego. Aquí aprenderemos a crear un efecto de explosión para un enemigo en Unity, aprovechando al máximo el sistema de partículas.
Para comenzar, necesitamos configurar el sistema de partículas desde el menú Effects de Unity. La idea es que el efecto se sienta más como una explosión en lugar de un festival de colores continuos. Para lograr esto, seguimos estos pasos:
Una vez terminada la configuración del sistema de partículas, el siguiente paso es integrarlo con el proyecto del videojuego. Aquí te explicamos cómo hacerlo:
WeaponDamage
dos variables:public GameObject HurtAnimation
: para asociar el prefab de la explosión.
public GameObject HitPoint
: para indicar la posición de la instancia del efecto.
public GameObject HurtAnimation; public GameObject HitPoint;
// Dentro de OnTriggerEnter2D Instantiate(HurtAnimation, HitPoint.transform.position, HitPoint.transform.rotation);
Esta captura de script permite que, al generar una colisión con el enemigo, se instancie el efecto visual de la sangre.
Finalmente, es importante realizar algunos ajustes para asegurar que el sistema de partículas se comporte como se espera y se vea bien en el juego.
Este ejercicio no solo mejora el aspecto visual de tu juego, sino que también enriquece tu comprensión del poderoso sistema de partículas de Unity. ¡Manos a la obra y no olvides compartir tus avances con la comunidad para recibir feedback y mejorar continuamente!
Aportes 8
Preguntas 2
Cambiar el nombre luego de hacer animaciones, puede provocar que se pierdan las referencias de las mismas. Me paso 😦
Qué interesante el tema de las partículas. Le añadi tanto al enemigo como al jugador:
NO SE SI SE HAN DADO CUENTA QUE EL OBJETO CREADO DE PARTÍCULAS NUNCA SE QUITA
cree un pequeño script para que se elimine solo se lo tienen que agregar al prefab blood burst para que lo elimine y le ponen el tiempo
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class destruir_sangre : MonoBehaviour
{
public int tiempo_para_destruir;
private float contador_tiempo;
// Start is called before the first frame update
void Start()
{
contador_tiempo = tiempo_para_destruir; //iguala el tiempo para destruir con el contador
}
// Update is called once per frame
void Update()
{
contador_tiempo -= Time.deltaTime;//descuenta el tiempo del ultimo renderisado
if (contador_tiempo < 0)//si se acaba el tiempo se destruye el objeto
{
Destroy(gameObject);
}
}
}
Les comparto mi script, que instanciara las particulas y las agregara a una lista, las cuales posterior a su animación, estas se iran eliminando para evitar una sobrecarga de memoria
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Weapons : MonoBehaviour
{
[SerializeField]
private int weaponDamage;
[SerializeField]
private int weaponResistance;
public GameObject hurtAnim;
public GameObject hitPoint;
List<GameObject> particlesGarbage = new List<GameObject>();
private bool particlesActive;
private float timeToDie=2;
private float currentTimeToDie;
private void Update()
{
if (particlesGarbage.Count>0) {
if (currentTimeToDie < 0) {
foreach (GameObject particle in particlesGarbage)
{
Destroy(particle);
currentTimeToDie = timeToDie;
}
}
currentTimeToDie -= Time.deltaTime;
}
}
private void OnTriggerEnter2D(Collider2D collision)
{
if (collision.CompareTag("Enemy")) {
collision.gameObject.GetComponent<HealthManager>()
.DamageCharacter(weaponDamage);
GameObject particlesAnim=Instantiate(hurtAnim, hitPoint.transform.position, hitPoint.transform.rotation);
particlesGarbage.Add(particlesAnim);
currentTimeToDie = timeToDie;
}
}
}
Considero que la sangre debería instanciarse en el Enemy y no en la espada. Pero más alla de eso, hay que destruir el effecto para que no quede ahí vivo. Es simplemente asignar el effecto al gameObject y dsp destruirlo pasado un cierto tiempo. Dejo el codigo
public class WeaponDamage : MonoBehaviour
{
[Header("Configuration")]
public int damage;
public GameObject bloodFX;
public GameObject hitPoint;
private void OnTriggerEnter2D(Collider2D collision)
{
if (collision.CompareTag("Enemy"))
{
collision.gameObject.GetComponent<HealthManager>().DamageCharacter(damage); //Do damage to Enemy using his HealthManager Component.
GameObject bloodEffect = Instantiate(bloodFX, hitPoint.transform.position, hitPoint.transform.rotation) as GameObject;
Destroy(bloodEffect, 2f); //Destroy BloodEffect in 2secs
}
}
}
increibles esos 12 + 1 segundos de pantalla en negro al inicio 🧐
Genial
Después de la Instantiate, solo agregenle destruir. A mi prefab le puse particulas.
<code>
Instantiate(particulas, hitPoint.transform.position, hitPoint.transform.rotation);
Destroy(GameObject.Instantiate(particulas));
</code>
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?