Introducción

1

Game Design del juego

2

La estructura y assets de un proyecto en Unity

3

Convirtiendo nuestros assets en Tiles

4

Tilemaps y creación del escenario

5

Bonus: FastForward de la creación del escenario, sorting layers y creación de colliders

6

Acá encontrarás los archivos de este curso

Personaje principal: Movimiento y Animaciones

7

El jugador y el movimiento

8

Creando nuestra primera animación

9

Creando el grafo de animaciones

10

Usando un árbol de animaciones

11

Mostrando la solución del desafío e implementando transición entre blended trees

12

Programando una cámara que siga al jugador

13

Corrección del bug gráfico

14

límites del escenario, rigid bodies

15

Ejercicio: diseño de interiores

Escenarios Avanzados

16

Transiciones entre escenas

17

Mantener Player y Camera entre escenas

18

Spawning Points: programando que el jugador y la cámara aparezcan en el lugar correcto al cambiar de escena

19

Agregando Identificadores a nuestros Spawning Points para controlar mejor el flujo de nuestro juego

Enemigos Avanzados

20

Creando nuestro enemigo

21

Programando las físicas y el patrullaje del enemigo

22

Generando movimiento completamente aleatorio

23

Programando el ataque del enemigo

24

Crear Manager de Health del Player

25

Crear armas

26

Programando el ataque del Player con arma

27

Mover la espada al caminar

28

Creando el ataque con espada

29

Ejecutando el ataque con un botón

30

Movimiento en diagonal

31

Optimizando nuestro player controller

32

Ataque mejorado

33

Uso de partículas

34

Añadir el daño del enemigo en batalla

35

Programando los contadores de vida del enemigo

36

Colocando más info de UI en pantalla

37

Script de la vida

Personaje principal avanzado

38

Añadir el daño del personaje (ejercicio)

39

Sistema de puntos de experiencia para nuestro personaje principal

40

Level Up!

41

Level Up! Defensa y Reto Final del Módulo: Stats de los enemigos

42

Creando un NPC

43

Limitar el movimiento de nuestro NPC

44

Creando una pantalla de diálogos para nuestro RPG

45

El diálogo del NPC

46

Múltiples líneas de diálogo

47

Parar el NPC durante el diálogo

48

Parar el personaje durante el diálogo

Quests

49

La estructura de una quest

50

Quest 1: Ir a un lugar

51

Quest 2: Encontrar un objeto

52

Quest 3: Matar enemigos

53

Revisión de bugs

54

Mantener la cámara dentro del escenario

55

El problema al cambiar de escena

Audio

56

Agregando SFX a nuestro videojuego

57

Agregando música a nuestro videojuego

58

Ajustar volúmen del audio de cada uno de los efectos de sonido

59

Creando un VolumeManager

60

Agregando economía a nuestro juego y cierre

No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Uso de partículas

33/60
Recursos

¿Cómo crear un efecto de explosión en Unity usando partículas?

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.

¿Cómo configuro el sistema de partículas para el efecto visual?

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:

  1. Start Lifetime: ajustar el tiempo de vida de las partículas. Se recomienda reducir el tiempo de 5 a 2 segundos, para que las partículas se destruyan más rápidamente.
  2. Sorting Layer: ajustarla para que las partículas sean visibles adecuadamente en el juego, preferentemente igual que la del Player o crear una nueva para ellas.
  3. Tamaño de las Partículas: reducir su tamaño inicial para que sean más pequeñas, por ejemplo, usando valores como 0.2 o 0.25.
  4. Color de las Partículas: cambiar el color para adaptarlo a la temática del juego; por ejemplo, un tono rojo si se quieren representar gotas de sangre.
  5. Shape (Forma): cambiar de cónica a esférica para que las partículas se dispersen en todas direcciones.
  6. Emission: experimentar con la cantidad de partículas emitidas por segundo, controlando los parámetros en la sección bursts para ajustar el efecto deseado.
  7. Size Over Lifetime: Habilitar esta opción para que el tamaño de las partículas disminuya con el tiempo, utilizando una curva para ajustar esta transición.

¿Cómo se integra el efecto en el juego?

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:

  1. Prefabricado del Efecto: crear un prefab del sistema de partículas y asegurarse de que su posición, rotación y escala sean las correctas al iniciar (0,0,0).
  2. Ubicación de Impacto: establecer un objeto vacío, llamado Hit Point, en la punta de la espada o el área deseada donde se instanciará el efecto de explosión.
  3. Modificación del Script: añadir al script 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.

¿Qué ajustes finales se deben realizar?

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.

  • Desactivar Looping: desactivar la opción de looping para que la animación se ejecute una sola vez por colisión.
  • Probar Configuraciones: ajustar el tiempo de vida de las partículas y el tamaño del efecto según se necesite para una experiencia de juego más fluida.
  • Personalización: experimentar con el sistema de partículas, modificar los parámetros de colisión y decidir las reglas del juego para crear un producto único y personal.

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

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

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>