Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprende Explicación del Código | Mejorar el Juego de Flappy Bird
Juego de Lucha en Unity

bookExplicación del Código

Código del Jugador

Inicialización en el método Start

private void Start()
{
    startPosition = transform.position;
}

Propósito: Almacena la posición inicial del jugador cuando comienza el juego.

Reinicio de la posición del jugador

public void RestartPlayerPosition()
{
    transform.position = startPosition;
    rb.velocity = Vector2.zero;
}

Propósito: Restablece la posición del jugador a la posición inicial y detiene cualquier movimiento estableciendo la velocidad en cero.

Manejo de la entrada del jugador en el método Update

private void Update()
{
    Vector2 oldVelocity = rb.velocity;
    if (Input.GetKeyDown(KeyCode.Space))
    {
        oldVelocity.y = 6;
    }
    oldVelocity.x = 4;
    rb.velocity = oldVelocity;
}

Propósito: Captura la entrada del jugador (tecla espacio) para hacer que el jugador "salte" estableciendo la velocidad en y a 6, mientras mueve constantemente al jugador hacia la derecha estableciendo la velocidad en x a 4.

Manejo de colisiones

OnCollisionEnter2D

private void OnCollisionEnter2D(Collision2D collision)
{
    if (collision.collider.tag == "ground")
    {
        RestartPlayerPosition();
    }
}

Propósito: Restablece la posición del jugador al colisionar con objetos etiquetados como "ground".

OnTriggerEnter2D

private void OnTriggerEnter2D(Collider2D collision)
{
    if (collision.tag == "win")
    {
        winPanel.SetActive(true);
        SoundManager.instance.PlayEffect(1);
    }
}

Propósito: Activa el panel de victoria y reproduce un efecto de sonido cuando el jugador colisiona con objetos etiquetados como "win".

Resumen

  • Movimiento: El jugador se mueve continuamente hacia la derecha y salta al presionar la tecla de espacio;
  • Reinicio: La posición del jugador se restablece al colisionar con el suelo;
  • Victoria: Muestra un panel de victoria y reproduce un sonido al alcanzar el disparador de victoria.

Clase SoundManager

Método Start

private void Start()
{
    if (instance == null)
    {
        instance = this;
    }
    else
    {
        Destroy(gameObject);
        return;
    }
    DontDestroyOnLoad(gameObject);
}

Propósito: Garantiza que solo exista una instancia de SoundManager en el juego utilizando el patrón Singleton. Utiliza DontDestroyOnLoad(gameObject) para mantener el objeto a través de diferentes escenas.

Método PlayEffect

public void PlayEffect(int index)
{
    if (index >= 0 && index < effects.Count)
    {
        source.PlayOneShot(effects[index]);
    }
}

Propósito: Recibe un entero index para identificar qué efecto de sonido reproducir de la lista effects. Verifica si el index está dentro del rango válido de la lista effects y reproduce el efecto de sonido especificado utilizando source.PlayOneShot(effects[index]).

Resumen

  • Patrón Singleton: Garantiza que solo exista una instancia de SoundManager en el juego, persistiendo entre escenas;
  • Reproducción de efectos de sonido: Utiliza el método PlayEffect para reproducir efectos de sonido especificando su índice en la lista effects;
  • Fuente de audio: Utiliza un componente AudioSource para reproducir los clips de audio.

Clase WinPanel

La clase WinPanel proporciona funcionalidad para el panel de interfaz de usuario que aparece cuando el jugador gana. Incluye métodos para regresar al menú principal o reiniciar el nivel, cada uno reproduciendo un efecto de sonido y cargando la escena correspondiente.

Métodos

Método ReturnToMainMenu

public void ReturnToMainMenu()
{
    SoundManager.instance.PlayEffect(0);
    SceneManager.LoadScene(0);
}

Propósito: Reproduce un efecto de sonido (índice 0) utilizando SoundManager.instance.PlayEffect(0). Carga la escena del menú principal con el índice de compilación 0 usando SceneManager.LoadScene(0).

Método RestartLevel

public void RestartLevel()
{
    SoundManager.instance.PlayEffect(0);
    SceneManager.LoadScene("Game");
}

Propósito: Reproduce un efecto de sonido (índice 0) utilizando SoundManager.instance.PlayEffect(0). Carga la escena del juego llamada "Game" usando SceneManager.LoadScene("Game").

¿Todo estuvo claro?

¿Cómo podemos mejorarlo?

¡Gracias por tus comentarios!

Sección 5. Capítulo 1

Pregunte a AI

expand

Pregunte a AI

ChatGPT

Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla

Awesome!

Completion rate improved to 3.33

bookExplicación del Código

Desliza para mostrar el menú

Código del Jugador

Inicialización en el método Start

private void Start()
{
    startPosition = transform.position;
}

Propósito: Almacena la posición inicial del jugador cuando comienza el juego.

Reinicio de la posición del jugador

public void RestartPlayerPosition()
{
    transform.position = startPosition;
    rb.velocity = Vector2.zero;
}

Propósito: Restablece la posición del jugador a la posición inicial y detiene cualquier movimiento estableciendo la velocidad en cero.

Manejo de la entrada del jugador en el método Update

private void Update()
{
    Vector2 oldVelocity = rb.velocity;
    if (Input.GetKeyDown(KeyCode.Space))
    {
        oldVelocity.y = 6;
    }
    oldVelocity.x = 4;
    rb.velocity = oldVelocity;
}

Propósito: Captura la entrada del jugador (tecla espacio) para hacer que el jugador "salte" estableciendo la velocidad en y a 6, mientras mueve constantemente al jugador hacia la derecha estableciendo la velocidad en x a 4.

Manejo de colisiones

OnCollisionEnter2D

private void OnCollisionEnter2D(Collision2D collision)
{
    if (collision.collider.tag == "ground")
    {
        RestartPlayerPosition();
    }
}

Propósito: Restablece la posición del jugador al colisionar con objetos etiquetados como "ground".

OnTriggerEnter2D

private void OnTriggerEnter2D(Collider2D collision)
{
    if (collision.tag == "win")
    {
        winPanel.SetActive(true);
        SoundManager.instance.PlayEffect(1);
    }
}

Propósito: Activa el panel de victoria y reproduce un efecto de sonido cuando el jugador colisiona con objetos etiquetados como "win".

Resumen

  • Movimiento: El jugador se mueve continuamente hacia la derecha y salta al presionar la tecla de espacio;
  • Reinicio: La posición del jugador se restablece al colisionar con el suelo;
  • Victoria: Muestra un panel de victoria y reproduce un sonido al alcanzar el disparador de victoria.

Clase SoundManager

Método Start

private void Start()
{
    if (instance == null)
    {
        instance = this;
    }
    else
    {
        Destroy(gameObject);
        return;
    }
    DontDestroyOnLoad(gameObject);
}

Propósito: Garantiza que solo exista una instancia de SoundManager en el juego utilizando el patrón Singleton. Utiliza DontDestroyOnLoad(gameObject) para mantener el objeto a través de diferentes escenas.

Método PlayEffect

public void PlayEffect(int index)
{
    if (index >= 0 && index < effects.Count)
    {
        source.PlayOneShot(effects[index]);
    }
}

Propósito: Recibe un entero index para identificar qué efecto de sonido reproducir de la lista effects. Verifica si el index está dentro del rango válido de la lista effects y reproduce el efecto de sonido especificado utilizando source.PlayOneShot(effects[index]).

Resumen

  • Patrón Singleton: Garantiza que solo exista una instancia de SoundManager en el juego, persistiendo entre escenas;
  • Reproducción de efectos de sonido: Utiliza el método PlayEffect para reproducir efectos de sonido especificando su índice en la lista effects;
  • Fuente de audio: Utiliza un componente AudioSource para reproducir los clips de audio.

Clase WinPanel

La clase WinPanel proporciona funcionalidad para el panel de interfaz de usuario que aparece cuando el jugador gana. Incluye métodos para regresar al menú principal o reiniciar el nivel, cada uno reproduciendo un efecto de sonido y cargando la escena correspondiente.

Métodos

Método ReturnToMainMenu

public void ReturnToMainMenu()
{
    SoundManager.instance.PlayEffect(0);
    SceneManager.LoadScene(0);
}

Propósito: Reproduce un efecto de sonido (índice 0) utilizando SoundManager.instance.PlayEffect(0). Carga la escena del menú principal con el índice de compilación 0 usando SceneManager.LoadScene(0).

Método RestartLevel

public void RestartLevel()
{
    SoundManager.instance.PlayEffect(0);
    SceneManager.LoadScene("Game");
}

Propósito: Reproduce un efecto de sonido (índice 0) utilizando SoundManager.instance.PlayEffect(0). Carga la escena del juego llamada "Game" usando SceneManager.LoadScene("Game").

¿Todo estuvo claro?

¿Cómo podemos mejorarlo?

¡Gracias por tus comentarios!

Sección 5. Capítulo 1
some-alt