SlideShare una empresa de Scribd logo
1 de 20
Script Barra
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Barra: MonoBehaviour
{
public float velocidad = 20f;
Vector3 posicionInicial;
// Start is called before the first frame update
void Start()
{
posicionInicial = transform.position;
}
public void Reset()
{
transform.position = posicionInicial;
}
// Update is called once per frame
void Update()
{
float tecladoHorizontal = Input.GetAxisRaw("Horizontal");
float posX = transform.position.x + (tecladoHorizontal * velocidad *
Time.deltaTime);
transform.position = new Vector3(Mathf.Clamp(posX, -8, 8), transform.position.y,
transform.position.z);
}
}
Explicación de código Barra generado en C#
1. Se importan las siguientes bibliotecas:
 System.Collections: Contiene las interfaces y clases que definen
diversas colecciones de objetos, como listas, colas,
diccionarios, entre otros.
 System.Collections.Generic: Proporciona interfaces y clases
genéricas, como List<T>, Dictionary<TKey, TValue>, entre otros.
 UnityEngine: Contiene las clases y funciones para interactuar con
el motor de juego Unity.
2. Se define una clase llamada "Barra" que hereda de MonoBehaviour, lo
que indica que es un componente de Unity que se puede adjuntar a un
objeto en el escenario.
3. Dentro de la clase "Barra" se declaran las siguientes variables y
campos:
 public float velocidad = 20f;: Una variable pública que
representa la velocidad de movimiento de la barra y tiene un
valor predeterminado de 20.
 Vector3 posicionInicial;: Una variable privada de tipo Vector3
que almacena la posición inicial de la barra.
4. El método Start() se ejecuta una vez al inicio antes de que se
muestre el primer fotograma del juego. En este método, se asigna la
posición inicial del objeto a la variable posicionInicial utilizando
transform.position.
5. El método público Reset() se define para restablecer la posición de
la barra a la posición inicial almacenada en posicionInicial. Dentro
del método, se asigna la posición inicial a transform.position.
6. El método Update() se ejecuta en cada fotograma del juego. En este
método, se realiza lo siguiente:
 Se obtiene la entrada horizontal del teclado utilizando
Input.GetAxisRaw("Horizontal"). El resultado se almacena en la
variable tecladoHorizontal.
 Se calcula la nueva posición X de la barra sumando el producto de
tecladoHorizontal, velocidad y Time.deltaTime a la posición
actual X de la barra. El resultado se almacena en la variable
posX.
 Se actualiza la posición de la barra utilizando
transform.position y se crea un nuevo Vector3 con el valor
clamped de posX, manteniendo las posiciones Y y Z sin cambios.
Mathf.Clamp se utiliza para asegurarse de que la posición X esté
entre -8 y 8.
En resumen, este script controla el movimiento horizontal de un objeto
en Unity (llamado "Barra") utilizando la entrada del teclado, y
asegura que la posición del objeto esté limitada entre los valores de
-8 y 8. El método Reset() permite restablecer la posición de la barra
a su posición inicial.
Script Bloque
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Bloque : MonoBehaviour
{
public GameObject efectoParticulas;
public Puntos puntos;
//Is Trigger DESACTIVADO
void OnCollisionEnter()
{
Instantiate(efectoParticulas, transform.position, Quaternion.identity);
Destroy(gameObject);
transform.SetParent(null);
puntos.GanarPunto();
}
}
Explícame paso a paso el código generado c#
Explicación de código Bloque generado en C#
1. Se importan las siguientes bibliotecas:
 System.Collections: Contiene las interfaces y clases que
definen diversas colecciones de objetos, como listas, colas,
diccionarios, entre otros.
 System.Collections.Generic: Proporciona interfaces y clases
genéricas, como List<T>, Dictionary<TKey, TValue>, entre
otros.
 UnityEngine: Contiene las clases y funciones para
interactuar con el motor de juego Unity.
2. Se define una clase llamada "Bloque" que hereda de MonoBehaviour,
indicando que es un componente de Unity que se puede adjuntar a
un objeto en el escenario.
3. Dentro de la clase "Bloque" se declaran los siguientes campos y
variables públicos:
 public GameObject efectoParticulas;: Un GameObject público que
representa el efecto de partículas a instanciar cuando el
bloque colisiona.
 public Puntos puntos;: Una variable pública del tipo Puntos,
que probablemente es una referencia a otro script que maneja
los puntos en el juego.
4. El método OnCollisionEnter() se llama automáticamente cuando el
objeto colisiona con otro objeto. En este método, se realiza lo
siguiente:
 Se instancia el objeto efectoParticulas en la posición actual
del bloque y con una rotación nula (Quaternion.identity). Esto
crea el efecto de partículas en la posición de colisión.
 Se destruye el objeto bloque actual utilizando
Destroy(gameObject), eliminándolo del juego.
 Se establece el padre del objeto bloque actual en null
utilizando transform.SetParent(null). Esto hace que el bloque
deje de tener un padre (si tenía uno).
 Se llama al método GanarPunto() en el objeto puntos, que
probablemente es una función definida en el script Puntos para
incrementar la puntuación del juego.
En resumen, este script se utiliza para controlar la colisión de un
objeto "Bloque". Cuando ocurre una colisión, se crea un efecto de
partículas, se destruye el bloque, se elimina su padre (si tiene
alguno) y se incrementa la puntuación mediante una llamada al método
GanarPunto() en el objeto puntos.
Script BotonSalir
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class BotonSalir : MonoBehaviour
{
public bool salir;
[System.Obsolete]
void Update()
{
if (Input.GetKeyDown(KeyCode.Escape))
{
if (salir) {
Debug.Log("Salimos del Juego");
Application.Quit();
}
else
{
Application.LoadLevel("Portada");
}
}
}
}
Explícame paso a paso el código generado c#
Explicación de código BotonSalir generado en C#
1. Se importan las siguientes bibliotecas:
 System.Collections: Contiene las interfaces y clases que
definen diversas colecciones de objetos, como listas, colas,
diccionarios, entre otros.
 System.Collections.Generic: Proporciona interfaces y clases
genéricas, como List<T>, Dictionary<TKey, TValue>, entre
otros.
 UnityEngine: Contiene las clases y funciones para
interactuar con el motor de juego Unity.
2. Se define una clase llamada "BotonSalir" que hereda de
MonoBehaviour, indicando que es un componente de Unity que se
puede adjuntar a un objeto en el escenario.
3. Se define una clase llamada "BotonSalir" que hereda de
MonoBehaviour, indicando que es un componente de Unity que se
puede adjuntar a un objeto en el escenario.
4. El método Update() se llama automáticamente en cada fotograma del
juego. En este método, se realiza lo siguiente:
 Se verifica si se ha presionado la tecla Escape
(Input.GetKeyDown(KeyCode.Escape)).
 Si la tecla Escape ha sido presionada, se realiza una
comprobación con la variable salir:
 Si `salir` es verdadero, se muestra un mensaje en la consola
utilizando `Debug.Log("Salimos del Juego")`.
 Luego, se llama a `Application.Quit()` para salir del juego.
(Nota: `Application.Quit()` es obsoleto en versiones
recientes de Unity).
 Si `salir` es falso, significa que no se debe salir del
juego. En su lugar, se llama a
`Application.LoadLevel("Portada")`,
 lo cual carga la escena llamada "Portada" en el juego.
En resumen, este script controla el comportamiento de un botón de
salida en el juego. Si se presiona la tecla Escape y la variable
`salir` es verdadera,el juego se cierra utilizando
`Application.Quit()`. Si `salir` es falsa, se carga la escena llamada
"Portada" utilizando `Application.LoadLevel()`.
Script EmpezarPartida
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class EmpezarPartida : MonoBehaviour
{
[System.Obsolete]
void Update()
{
if (Input.GetButtonDown("Fire1"))
{
Puntos.puntos = 0;
Vidas.vidas = 3;
Application.LoadLevel("Nivel01");
}
}
}
Explícame paso a paso el código generado c#
Explicación de código EmpezarPartida generado en C#
1. Se importan las siguientes bibliotecas:
 `System.Collections`: Contiene las interfaces y clases que
definen diversas colecciones de objetos, como listas, colas,
diccionarios, etc.
 `System.Collections.Generic`: Proporciona interfaces y clases
genéricas, como `List<T>`, `Dictionary<TKey, TValue>`, etc.
 `UnityEngine`: Contiene las clases y funciones para interactuar
con el motor de juego Unity.
2. Se define una clase llamada "EmpezarPartida" que hereda de
MonoBehaviour, indicando que es un componente de Unity que se puede
adjuntar a un objeto en el escenario.
3. El método `Update()` se llama automáticamente en cada fotograma del
juego. En este método, se realiza lo siguiente:
 Se verifica si se ha presionado el botón de fuego, que
generalmente está asociado al botón izquierdo del mouse o a la
tecla de espacio (`Input.GetButtonDown("Fire1")`).
 Si se ha presionado el botón de fuego, se realiza lo siguiente:
 Se establece la variable estática `puntos` de la clase `Puntos`
en 0. Esto probablemente reinicia los puntos del juego.
 Se establece la variable estática `vidas` de la clase `Vidas` en
3. Esto probablemente restablece las vidas del juego.
 Se carga la escena llamada "Nivel01" utilizando
`Application.LoadLevel()`. Esto carga la escena del nivel 1 del
juego.
En resumen, este script controla el inicio de una partida en el juego.
Cuando se presiona el botón de fuego, se reinician los puntos y las
vidas del juego, y se carga la escena del nivel 1 para comenzar la
partida.
Script Pelota
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Pelota : MonoBehaviour
{
// Start is called before the first frame update
public float velocidadInicial = 600f;
public Rigidbody rig;
bool enJuego;
Vector3 posicionInicial;
public Transform barra;
private void Awake()
{
barra = GetComponentInParent<Transform>();
}
void Start()
{
posicionInicial = transform.position;
}
public void Reset()
{
transform.position = posicionInicial;
transform.SetParent(barra);
enJuego = false;
DetenerMovimiento();
}
public void DetenerMovimiento()
{
rig.isKinematic = true;
rig.velocity = Vector3.zero;
}
// Update is called once per frame
void Update()
{
if (!enJuego && Input.GetButtonDown("Fire1"))
{
enJuego = true;
transform.SetParent(null);
rig.isKinematic = false;
rig.AddForce(new Vector3(velocidadInicial, velocidadInicial, 0));
}
}
}
Explícame paso a paso el código generado c#
Explicación de código VelocidadInicial generado en C#
1. Se importan las siguientes bibliotecas:
 `System.Collections`: Contiene las interfaces y clases que
definen diversas colecciones de objetos, como listas, colas,
diccionarios, etc.
 `System.Collections.Generic`: Proporciona interfaces y clases
genéricas, como `List<T>`, `Dictionary<TKey, TValue>`, etc.
 `UnityEngine`: Contiene las clases y funciones para
interactuar con el motor de juego Unity.
2. Se define una clase llamada "Pelota" que hereda de MonoBehaviour,
indicando que es un componente de Unity que se puede adjuntar a un
objeto en el escenario.
3. Se declaran los siguientes campos y variables públicas:
 `public float velocidadInicial = 600f;`: Una variable pública
de tipo float que representa la velocidad inicial de la
pelota.
 `public Rigidbody rig;`: Un Rigidbody público que representa
el componente Rigidbody asociado a la pelota.
 `bool enJuego;`: Una variable booleana que indica si la pelota
está en juego o no.
 `Vector3 posicionInicial;`: Una variable que almacena la
posición inicial de la pelota.
4. El método `Awake()` se ejecuta antes del método `Start()` y se
utiliza para obtener una referencia al componente Transform del objeto
padre de la pelota, que probablemente sea la barra de juego. La
referencia se asigna a la variable `barra` utilizando
`GetComponentInParent<Transform>()`.
5. En el método `Start()`, se asigna la posición inicial de la pelota
a la variable `posicionInicial` utilizando `transform.position`.
6. El método público `Reset()` se define para restablecer la posición
y el estado de la pelota a los valores iniciales. Dentro del método,
se realiza lo siguiente:
 Se asigna la posición inicial a `transform.position`.
 Se establece el padre de la pelota en el objeto de la barra
utilizando `transform.SetParent(barra)`. Esto probablemente
hace que la pelota esté anclada a la barra en el inicio del
juego.
 Se establece `enJuego` en falso para indicar que la pelota no
está en juego.
 Se llama al método `DetenerMovimiento()` para detener el
movimiento de la pelota.
7. El método público `DetenerMovimiento()` se define para detener el
movimiento de la pelota. Dentro del método, se realiza lo siguiente:
 Se establece `rig.isKinematic` en verdadero para hacer que el
Rigidbody de la pelota sea kinemático y no se vea afectado por
las fuerzas externas.
 Se establece `rig.velocity` en `Vector3.zero` para detener la
velocidad de la pelota y evitar cualquier movimiento residual.
8. En el método `Update()`, se realiza lo siguiente:
 Se verifica si la pelota no está en juego (`!enJuego`) y se
ha presionado el botón de fuego
(`Input.GetButtonDown("Fire1")`), que generalmente está
asociado al botón izquierdo del mouse o a la tecla de
espacio.
 Si se cumple la condición, se realiza lo siguiente:
 Se establece `enJuego` en verdadero para indicar que la
pelota está en juego.
 Se establece el padre de la pelota en `null` utilizando
`transform.SetParent(null)`, lo que hace que la pelota deje
de estar anclada a la barra.
 Se establece `rig.isKinematic` en falso para permitir que el
Rigidbody de la pelota responda a las fuerzas físicas.
 Se agrega una fuerza a la pelota utilizando
`rig.AddForce(new Vector3(velocidadInicial,
velocidadInicial, 0))`. La dirección y magnitud de la fuerza
se determinan mediante el vector `(velocidadInicial,
velocidadInicial, 0)`, lo que hace que la pelota se mueva en
diagonal hacia arriba y a la derecha con una velocidad
inicial especificada.
En resumen, este script controla el comportamiento de una pelota en el
juego. Al inicio, la pelota está anclada a la barra y no está en
juego. Cuando se presiona el botón de fuego, la pelota deja de estar
anclada a la barra, se habilita su Rigidbody y se le aplica una fuerza
inicial para iniciar el movimiento. El método `Reset()` se utiliza
para reiniciar la posición y el estado de la pelota, y el método
`DetenerMovimiento()` se utiliza para detener su movimiento en
cualquier momento.
Script Puntos
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class Puntos : MonoBehaviour
{
// Start is called before the first frame update
public static int puntos = 0;
public Text textoPuntos;
public GameObject nivelCompletado;
public GameObject juegoCompletado;
public SiguienteNivel siguienteNivel;
public Pelota pelota;
public Barra barra;
public Transform contenedorBloques;
void Start()
{
ActualizarMarcadorPuntos();
}
void ActualizarMarcadorPuntos()
{
textoPuntos.text = "Puntos: " + Puntos.puntos;
}
public void GanarPunto()
{
Puntos.puntos++;
ActualizarMarcadorPuntos();
if(contenedorBloques.childCount <= 0)
{
pelota.DetenerMovimiento();
barra.enabled = false;
if(siguienteNivel.EsUltimoNivel())
{
juegoCompletado.SetActive(true);
}
else
{
nivelCompletado.SetActive(true);
}
siguienteNivel.ActivarCarga();
}
}
}
Explícame paso a paso el código generado c#
Explicación de código Puntos generado en C#
1. Se importan las siguientes bibliotecas:
 `System.Collections`: Contiene las interfaces y clases que
definen diversas colecciones de objetos, como listas, colas,
diccionarios, etc.
 `System.Collections.Generic`: Proporciona interfaces y
clases genéricas, como `List<T>`, `Dictionary<TKey,
TValue>`, etc.
 `UnityEngine`: Contiene las clases y funciones para
interactuar con el motor de juego Unity.
 `UnityEngine.UI`: Proporciona las clases necesarias para
interactuar con la interfaz de usuario en Unity.
2. Se define una clase llamada "Puntos" que hereda de MonoBehaviour,
indicando que es un componente de Unity que se puede adjuntar a un
objeto en el escenario.
3. Se declaran los siguientes campos y variables públicas:
 `public static int puntos = 0;`: Una variable estática de
tipo entero que representa la puntuación actual del juego.
 `public Text textoPuntos;`: Un campo público de tipo Text
(proveniente de UnityEngine.UI) que representa el componente
de texto en la interfaz de usuario donde se mostrará la
puntuación.
 `public GameObject nivelCompletado;`: Un objeto de juego
(GameObject) que representa un panel o elemento visual que
se mostrará cuando se complete un nivel.
 `public GameObject juegoCompletado;`: Un objeto de juego
(GameObject) que representa un panel o elemento visual que
se mostrará cuando se complete todo el juego.
 `public SiguienteNivel siguienteNivel;`: Un componente de
tipo SiguienteNivel (que probablemente es otro script) que
controla el avance al siguiente nivel del juego.
 `public Pelota pelota;`: Un componente de tipo Pelota (que
probablemente es otro script) que controla el comportamiento
de la pelota en el juego.
 `public Barra barra;`: Un componente de tipo Barra (que
probablemente es otro script) que controla el comportamiento
de la barra en el juego.
 `public Transform contenedorBloques;`: Un componente de tipo
Transform que representa un contenedor de bloques en el
juego.
4. El método `Start()` se llama automáticamente al inicio del juego.
En este método, se llama al método `ActualizarMarcadorPuntos()`.
5. El método `ActualizarMarcadorPuntos()` se define para actualizar el
texto que muestra la puntuación en la interfaz de usuario. Dentro del
método, se realiza lo siguiente:
 Se establece el texto del componente `textoPuntos`
utilizando la propiedad `text` y concatenando la palabra
"Puntos" con el valor actual de la variable estática
`Puntos.puntos`.
6. El método público `GanarPunto()` se define para incrementar la
puntuación del juego y realizar comprobaciones adicionales. Dentro del
método, se realiza lo siguiente:
 Se incrementa la variable estática `Puntos.puntos` en 1.
 Se llama al método `ActualizarMarcadorPuntos()` para
actualizar el texto de la puntuación en la interfaz de
usuario.
 Se verifica si no quedan bloques en el contenedor
(`contenedorBloques.childCount <= 0`):
 Si no quedan bloques, se detiene el movimiento de la pelota
llamando al método `pelota.DetenerMovimiento()`.
 Se deshabilita el componente `barra` estableciendo su
propiedad `enabled` en falso.
 Se verifica si es el último nivel
(`siguienteNivel.EsUltimoNivel()`):
 Si es el último nivel, se activa el objeto de juego
`juegoCompletado`, que muestra un panel o mensaje de juego
completado.
 Si no es el último nivel, se activa el objeto de juego
`nivelCompletado`, que muestra un panel o mensaje de nivel
completado.
 Se llama al método `siguienteNivel.ActivarCarga()` para
avanzar al siguiente nivel.
En resumen, este script controla la puntuación en el juego y realiza
acciones relacionadas cuando se gana un punto. Actualiza el marcador
de puntuación en la interfaz de usuario, detiene el movimiento de la
pelota y deshabilita la barra cuando se completa un nivel o el juego
completo. También permite avanzar al siguiente nivel mediante el uso
del componente `siguienteNivel`.
Script Vidas
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class SiguienteNivel : MonoBehaviour
{
public string nivelACargar;
public float retraso;
// Start is called before the first frame update
[ContextMenu("Activar Carga")]
public void ActivarCarga()
{
Invoke("CargarNivel", retraso);
}
[System.Obsolete]
public void CargarNivel()
{
Application.LoadLevel(nivelACargar);
}
public bool EsUltimoNivel()
{
return nivelACargar == "Portada";
}
}
Explícame paso a paso el código generado c#
Explicación de código SiguienteNivel generado en C#
1. Se importa la siguiente biblioteca:
 `System.Collections`: Contiene las interfaces y clases que
definen diversas colecciones de objetos, como listas, colas,
diccionarios, etc.
 `UnityEngine`: Contiene las clases y funciones para
interactuar con el motor de juego Unity.
2. Se define una clase llamada "SiguienteNivel" que hereda de
MonoBehaviour, indicando que es un componente de Unity que se puede
adjuntar a un objeto en el escenario.
3. Se declaran los siguientes campos y variables públicas:
 `public string nivelACargar;`: Una variable de tipo cadena
que indica el nombre del nivel que se cargará al activar la
carga.
 `public float retraso;`: Una variable de tipo flotante que
representa el tiempo de retraso antes de cargar el siguiente
nivel.
4. El atributo `[ContextMenu("Activar Carga")]` se utiliza para
agregar un botón contextual en el editor de Unity que permite activar
la carga manualmente desde el editor.
5. El método público `ActivarCarga()` se define para activar la carga
del siguiente nivel con un retraso especificado. Dentro del método, se
realiza lo siguiente:
 Se utiliza `Invoke("CargarNivel", retraso)` para invocar el
método `CargarNivel()` después de un tiempo determinado.
6. El método público `CargarNivel()` se define para cargar el nivel
especificado. Dentro del método, se utiliza
`Application.LoadLevel(nivelACargar)` para cargar el nivel utilizando
el nombre especificado.
7. El método público `EsUltimoNivel()` se define para comprobar si el
nivel actual es el último nivel. Dentro del método, se realiza lo
siguiente:
 Se compara el valor de `nivelACargar` con el nombre del
nivel de portada ("Portada").
 Si el valor de `nivelACargar` es igual a "Portada", se
devuelve `true`, lo que indica que es el último nivel.
En resumen, este script permite cargar el siguiente nivel en el juego.
Utiliza el método `Invoke` para activar la carga con un retraso
especificado. Además, proporciona un método para comprobar si el nivel
actual es el último nivel.
Script SonidosPelotas
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class SonidosPelota : MonoBehaviour
{
public AudioSource rebote;
public AudioSource punto;
void OnCollisionEnter(Collision otro)
{
if(otro.gameObject.CompareTag("Bloque"))
{
punto.Play();
}
else
{
rebote.Play();
}
}
}
Explícame paso a paso el código generado c#
Explicación de código SonidosPelotas generado en C#
1. Se importa la siguiente biblioteca:
 `System.Collections`: Contiene las interfaces y clases que
definen diversas colecciones de objetos, como listas, colas,
diccionarios, entre otros.
 `UnityEngine`: Contiene las clases y funciones para
interactuar con el motor de juego Unity.
2. Se define una clase llamada "SonidosPelota" que hereda de
MonoBehaviour, indicando que es un componente de Unity que se puede
adjuntar a un objeto en el escenario.
3. Se declaran los siguientes campos y variables públicas:
 `public AudioSource rebote;`: Un componente de tipo
AudioSource que representa el sonido de rebote de la pelota.
 `public AudioSource punto;`: Un componente de tipo
AudioSource que representa el sonido al ganar un punto al
golpear un bloque.
4. El método `OnCollisionEnter(Collision otro)` se llama
automáticamente cuando la pelota colisiona con otro objeto. Dentro del
método, se realiza lo siguiente:
 Se verifica si el objeto con el que colisionó la pelota
tiene la etiqueta (tag) "Bloque" utilizando
`otro.gameObject.CompareTag("Bloque")`.
 Si el objeto tiene la etiqueta "Bloque", se reproduce el
sonido de punto llamando a `punto.Play()`.
 Si el objeto no tiene la etiqueta "Bloque", se reproduce el
sonido de rebote llamando a `rebote.Play()`.
En resumen, este script controla los sonidos relacionados con la
pelota en el juego. Cuando la pelota colisiona con un objeto, se
verifica si ese objeto tiene la etiqueta "Bloque". Si es así, se
reproduce un sonido de punto. Si el objeto no tiene la etiqueta
"Bloque", se reproduce un sonido de rebote. Los sonidos se reproducen
utilizando los componentes de tipo AudioSource especificados en los
campos `rebote` y `punto`.
Script Suelo
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Suelo : MonoBehaviour
{
public Vidas vidas;
void OnTriggerEnter()
{
vidas.PerderVida();
}
}
Explícame paso a paso el código generado c#
Explicación de código Suelo generado en C#
1. Se importa la siguiente biblioteca:
 `System.Collections`: Contiene las interfaces y clases que
definen diversas colecciones de objetos, como listas, colas,
diccionarios, etc.
 `UnityEngine`: Contiene las clases y funciones para
interactuar con el motor de juego Unity.
2. Se define una clase llamada "Suelo" que hereda de MonoBehaviour,
indicando que es un componente de Unity que se puede adjuntar a un
objeto en el escenario.
3. Se declara el siguiente campo público:
 `public Vidas vidas;`: Una referencia al script "Vidas" que
controla el número de vidas en el juego.
4. El método `OnTriggerEnter()` se llama automáticamente cuando un
objeto con un Collider (en este caso, la pelota) entra en contacto con
el Collider del suelo. Dentro del método, se realiza lo siguiente:
 Se llama al método `PerderVida()` del script "Vidas" a
través de la referencia `vidas`. Este método se encarga de
disminuir el contador de vidas en el juego.
En resumen, este script controla la interacción entre la pelota y el
suelo en el juego. Cuando la pelota colisiona con el Collider del
suelo, se llama al método `PerderVida()` del script "Vidas" para
disminuir el contador de vidas. La referencia al script "Vidas" se
establece a través del campo público `vidas`, que se asigna en el
editor de Unity.
Script Vidas
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class Vidas : MonoBehaviour
{
public static int vidas = 3;
public Text textoVidas;
public Pelota pelota;
public Barra barra;
public GameObject gameOver;
public SiguienteNivel siguienteNivel;
// Start is called before the first frame update
void Start()
{
ActualizarMarcadorVidas();
}
void ActualizarMarcadorVidas()
{
textoVidas.text = "Vidas: " + Vidas.vidas;
}
// Update is called once per frame
public void PerderVida()
{
if (vidas <= 0) return;
Vidas.vidas--;
ActualizarMarcadorVidas();
if(vidas <= 0)
{
//Mostrar GameOver
gameOver.SetActive(true);
pelota.DetenerMovimiento();
barra.enabled = false;
siguienteNivel.nivelACargar = "Portada";
siguienteNivel.ActivarCarga();
}
else
{
barra.Reset();
pelota.Reset();
}
}
}
Explicación de código Vidas generado en C#
Claro, a continuación te explico paso a paso el código generado en C#:
1. Se importa la siguiente biblioteca:
 `System.Collections`: Contiene las interfaces y clases que
definen diversas colecciones de objetos, como listas, colas,
diccionarios, etc.
 `UnityEngine`: Contiene las clases y funciones para
interactuar con el motor de juego Unity.
 `UnityEngine.UI`: Contiene las clases y funciones
relacionadas con la interfaz de usuario en Unity.
2. Se define una clase llamada "Vidas" que hereda de MonoBehaviour,
indicando que es un componente de Unity que se puede adjuntar a un
objeto en el escenario.
3. Se declaran los siguientes campos y variables públicas:
 `public static int vidas = 3;`: Una variable estática de
tipo entero que representa la cantidad inicial de vidas.
 `public Text textoVidas;`: Un componente de tipo Text que
muestra el número de vidas en la interfaz de usuario.
 `public Pelota pelota;`: Una referencia al script "Pelota"
que controla el comportamiento de la pelota en el juego.
 `public Barra barra;`: Una referencia al script "Barra" que
controla el comportamiento de la barra en el juego.
 `public GameObject gameOver;`: Un objeto de tipo GameObject
que representa el panel de Game Over en la interfaz de
usuario.
 `public SiguienteNivel siguienteNivel;`: Una referencia al
script "SiguienteNivel" que controla la carga del siguiente
nivel en el juego.
4. El método `Start()` se llama automáticamente al inicio del juego.
Dentro del método, se realiza lo siguiente:
 Se llama al método `ActualizarMarcadorVidas()` para mostrar
el número de vidas en la interfaz de usuario.
5. El método `ActualizarMarcadorVidas()` se define para actualizar el
texto que muestra el número de vidas en la interfaz de usuario. Dentro
del método, se realiza lo siguiente:
 Se actualiza el texto de `textoVidas` concatenando la
palabra "Vidas" con el valor de `Vidas.vidas`.
6. El método público `PerderVida()` se define para disminuir el
contador de vidas y realizar las acciones correspondientes cuando se
pierde una vida. Dentro del método, se realiza lo siguiente:
 Se verifica si el contador de vidas (`vidas`) es menor o
igual a 0. Si es así, se sale del método utilizando la
instrucción `return` sin realizar ninguna acción adicional.
 Se disminuye el contador de vidas (`Vidas.vidas--`) y se
llama al método `ActualizarMarcadorVidas()` para reflejar el
cambio en la interfaz de usuario.
 Se verifica si el contador de vidas ahora es menor o igual a
0. Si es así, se ejecutan las siguientes acciones:
 Se activa el objeto `gameOver` para mostrar el panel de Game
Over en la interfaz de usuario.
 Se detiene el movimiento de la pelota llamando al método
`DetenerMovimiento()` del script "Pelota".
 Se deshabilita el comportamiento de la barra estableciendo
`barra.enabled = false`.
 Se configura el siguiente nivel a cargar como "Portada" en
el script "SiguienteNivel".
 Se llama al método `ActivarCarga()` del script
"SiguienteNivel" para cargar el siguiente nivel.
 Si el contador de vidas
5. es mayor que 0, se ejecutan las siguientes acciones:
 Se llama al método `Reset()` del script "Barra" para
reiniciar la posición de la barra.
 Se llama al método `Reset()` del script "Pelota" para
reiniciar la posición de la pelota.
En resumen, este script controla la cantidad de vidas en el juego y
las acciones correspondientes cuando se pierde una vida. Actualiza el
marcador de vidas en la interfaz de usuario, muestra el panel de Game
Over cuando se quedan sin vidas, detiene el movimiento de la pelota y
deshabilita el comportamiento de la barra. También reinicia la
posición de la barra y la pelota cuando se pierde una vida.

Más contenido relacionado

Similar a Codigo Explicado Rompe Bloques.docx (20)

Semana 5 Java Swing
Semana 5   Java SwingSemana 5   Java Swing
Semana 5 Java Swing
 
Herencia encapsulación polimorfismo
Herencia encapsulación polimorfismoHerencia encapsulación polimorfismo
Herencia encapsulación polimorfismo
 
Codemotion 2014 - Introducción a Unity
Codemotion 2014 - Introducción a UnityCodemotion 2014 - Introducción a Unity
Codemotion 2014 - Introducción a Unity
 
Selectores graficos
Selectores graficosSelectores graficos
Selectores graficos
 
6.eventos y swing
6.eventos y swing6.eventos y swing
6.eventos y swing
 
6.eventos y swing
6.eventos y swing6.eventos y swing
6.eventos y swing
 
Encapsulamiento
EncapsulamientoEncapsulamiento
Encapsulamiento
 
Presentacion03
Presentacion03Presentacion03
Presentacion03
 
Clase03
Clase03Clase03
Clase03
 
Presentacion03
Presentacion03Presentacion03
Presentacion03
 
Clase03
Clase03Clase03
Clase03
 
Eventos
EventosEventos
Eventos
 
Statement
StatementStatement
Statement
 
Creacion de proyecto_en_netbeans
Creacion de proyecto_en_netbeansCreacion de proyecto_en_netbeans
Creacion de proyecto_en_netbeans
 
Programa calculadora
Programa calculadoraPrograma calculadora
Programa calculadora
 
Presentacion1410
Presentacion1410Presentacion1410
Presentacion1410
 
Presentacion1410
Presentacion1410Presentacion1410
Presentacion1410
 
Laboratorio3 check box
Laboratorio3 check boxLaboratorio3 check box
Laboratorio3 check box
 
Presentacion420
Presentacion420Presentacion420
Presentacion420
 
Presentacion420
Presentacion420Presentacion420
Presentacion420
 

Último

Modulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfModulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdf
AnnimoUno1
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
FagnerLisboa3
 

Último (11)

Modulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfModulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdf
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21
 
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdfRefrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estos
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvana
 
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxPROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
 
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxEL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
 

Codigo Explicado Rompe Bloques.docx

  • 1. Script Barra using System.Collections; using System.Collections.Generic; using UnityEngine; public class Barra: MonoBehaviour { public float velocidad = 20f; Vector3 posicionInicial; // Start is called before the first frame update void Start() { posicionInicial = transform.position; } public void Reset() { transform.position = posicionInicial; } // Update is called once per frame void Update() { float tecladoHorizontal = Input.GetAxisRaw("Horizontal"); float posX = transform.position.x + (tecladoHorizontal * velocidad * Time.deltaTime); transform.position = new Vector3(Mathf.Clamp(posX, -8, 8), transform.position.y, transform.position.z); } } Explicación de código Barra generado en C# 1. Se importan las siguientes bibliotecas:  System.Collections: Contiene las interfaces y clases que definen diversas colecciones de objetos, como listas, colas, diccionarios, entre otros.  System.Collections.Generic: Proporciona interfaces y clases genéricas, como List<T>, Dictionary<TKey, TValue>, entre otros.  UnityEngine: Contiene las clases y funciones para interactuar con el motor de juego Unity. 2. Se define una clase llamada "Barra" que hereda de MonoBehaviour, lo que indica que es un componente de Unity que se puede adjuntar a un objeto en el escenario.
  • 2. 3. Dentro de la clase "Barra" se declaran las siguientes variables y campos:  public float velocidad = 20f;: Una variable pública que representa la velocidad de movimiento de la barra y tiene un valor predeterminado de 20.  Vector3 posicionInicial;: Una variable privada de tipo Vector3 que almacena la posición inicial de la barra. 4. El método Start() se ejecuta una vez al inicio antes de que se muestre el primer fotograma del juego. En este método, se asigna la posición inicial del objeto a la variable posicionInicial utilizando transform.position. 5. El método público Reset() se define para restablecer la posición de la barra a la posición inicial almacenada en posicionInicial. Dentro del método, se asigna la posición inicial a transform.position. 6. El método Update() se ejecuta en cada fotograma del juego. En este método, se realiza lo siguiente:  Se obtiene la entrada horizontal del teclado utilizando Input.GetAxisRaw("Horizontal"). El resultado se almacena en la variable tecladoHorizontal.  Se calcula la nueva posición X de la barra sumando el producto de tecladoHorizontal, velocidad y Time.deltaTime a la posición actual X de la barra. El resultado se almacena en la variable posX.  Se actualiza la posición de la barra utilizando transform.position y se crea un nuevo Vector3 con el valor clamped de posX, manteniendo las posiciones Y y Z sin cambios. Mathf.Clamp se utiliza para asegurarse de que la posición X esté entre -8 y 8. En resumen, este script controla el movimiento horizontal de un objeto en Unity (llamado "Barra") utilizando la entrada del teclado, y asegura que la posición del objeto esté limitada entre los valores de -8 y 8. El método Reset() permite restablecer la posición de la barra a su posición inicial.
  • 3. Script Bloque using System.Collections; using System.Collections.Generic; using UnityEngine; public class Bloque : MonoBehaviour { public GameObject efectoParticulas; public Puntos puntos; //Is Trigger DESACTIVADO void OnCollisionEnter() { Instantiate(efectoParticulas, transform.position, Quaternion.identity); Destroy(gameObject); transform.SetParent(null); puntos.GanarPunto(); } } Explícame paso a paso el código generado c# Explicación de código Bloque generado en C# 1. Se importan las siguientes bibliotecas:  System.Collections: Contiene las interfaces y clases que definen diversas colecciones de objetos, como listas, colas, diccionarios, entre otros.  System.Collections.Generic: Proporciona interfaces y clases genéricas, como List<T>, Dictionary<TKey, TValue>, entre otros.  UnityEngine: Contiene las clases y funciones para interactuar con el motor de juego Unity. 2. Se define una clase llamada "Bloque" que hereda de MonoBehaviour, indicando que es un componente de Unity que se puede adjuntar a un objeto en el escenario. 3. Dentro de la clase "Bloque" se declaran los siguientes campos y variables públicos:  public GameObject efectoParticulas;: Un GameObject público que representa el efecto de partículas a instanciar cuando el bloque colisiona.
  • 4.  public Puntos puntos;: Una variable pública del tipo Puntos, que probablemente es una referencia a otro script que maneja los puntos en el juego. 4. El método OnCollisionEnter() se llama automáticamente cuando el objeto colisiona con otro objeto. En este método, se realiza lo siguiente:  Se instancia el objeto efectoParticulas en la posición actual del bloque y con una rotación nula (Quaternion.identity). Esto crea el efecto de partículas en la posición de colisión.  Se destruye el objeto bloque actual utilizando Destroy(gameObject), eliminándolo del juego.  Se establece el padre del objeto bloque actual en null utilizando transform.SetParent(null). Esto hace que el bloque deje de tener un padre (si tenía uno).  Se llama al método GanarPunto() en el objeto puntos, que probablemente es una función definida en el script Puntos para incrementar la puntuación del juego. En resumen, este script se utiliza para controlar la colisión de un objeto "Bloque". Cuando ocurre una colisión, se crea un efecto de partículas, se destruye el bloque, se elimina su padre (si tiene alguno) y se incrementa la puntuación mediante una llamada al método GanarPunto() en el objeto puntos. Script BotonSalir using System.Collections; using System.Collections.Generic; using UnityEngine; public class BotonSalir : MonoBehaviour { public bool salir; [System.Obsolete] void Update() { if (Input.GetKeyDown(KeyCode.Escape)) { if (salir) { Debug.Log("Salimos del Juego"); Application.Quit(); } else { Application.LoadLevel("Portada"); } }
  • 5. } } Explícame paso a paso el código generado c# Explicación de código BotonSalir generado en C# 1. Se importan las siguientes bibliotecas:  System.Collections: Contiene las interfaces y clases que definen diversas colecciones de objetos, como listas, colas, diccionarios, entre otros.  System.Collections.Generic: Proporciona interfaces y clases genéricas, como List<T>, Dictionary<TKey, TValue>, entre otros.  UnityEngine: Contiene las clases y funciones para interactuar con el motor de juego Unity. 2. Se define una clase llamada "BotonSalir" que hereda de MonoBehaviour, indicando que es un componente de Unity que se puede adjuntar a un objeto en el escenario. 3. Se define una clase llamada "BotonSalir" que hereda de MonoBehaviour, indicando que es un componente de Unity que se puede adjuntar a un objeto en el escenario. 4. El método Update() se llama automáticamente en cada fotograma del juego. En este método, se realiza lo siguiente:  Se verifica si se ha presionado la tecla Escape (Input.GetKeyDown(KeyCode.Escape)).  Si la tecla Escape ha sido presionada, se realiza una comprobación con la variable salir:  Si `salir` es verdadero, se muestra un mensaje en la consola utilizando `Debug.Log("Salimos del Juego")`.  Luego, se llama a `Application.Quit()` para salir del juego. (Nota: `Application.Quit()` es obsoleto en versiones recientes de Unity).  Si `salir` es falso, significa que no se debe salir del juego. En su lugar, se llama a `Application.LoadLevel("Portada")`,  lo cual carga la escena llamada "Portada" en el juego. En resumen, este script controla el comportamiento de un botón de salida en el juego. Si se presiona la tecla Escape y la variable `salir` es verdadera,el juego se cierra utilizando
  • 6. `Application.Quit()`. Si `salir` es falsa, se carga la escena llamada "Portada" utilizando `Application.LoadLevel()`. Script EmpezarPartida using System.Collections; using System.Collections.Generic; using UnityEngine; public class EmpezarPartida : MonoBehaviour { [System.Obsolete] void Update() { if (Input.GetButtonDown("Fire1")) { Puntos.puntos = 0; Vidas.vidas = 3; Application.LoadLevel("Nivel01"); } } } Explícame paso a paso el código generado c# Explicación de código EmpezarPartida generado en C# 1. Se importan las siguientes bibliotecas:  `System.Collections`: Contiene las interfaces y clases que definen diversas colecciones de objetos, como listas, colas, diccionarios, etc.  `System.Collections.Generic`: Proporciona interfaces y clases genéricas, como `List<T>`, `Dictionary<TKey, TValue>`, etc.  `UnityEngine`: Contiene las clases y funciones para interactuar con el motor de juego Unity. 2. Se define una clase llamada "EmpezarPartida" que hereda de MonoBehaviour, indicando que es un componente de Unity que se puede adjuntar a un objeto en el escenario. 3. El método `Update()` se llama automáticamente en cada fotograma del juego. En este método, se realiza lo siguiente:  Se verifica si se ha presionado el botón de fuego, que generalmente está asociado al botón izquierdo del mouse o a la tecla de espacio (`Input.GetButtonDown("Fire1")`).  Si se ha presionado el botón de fuego, se realiza lo siguiente:
  • 7.  Se establece la variable estática `puntos` de la clase `Puntos` en 0. Esto probablemente reinicia los puntos del juego.  Se establece la variable estática `vidas` de la clase `Vidas` en 3. Esto probablemente restablece las vidas del juego.  Se carga la escena llamada "Nivel01" utilizando `Application.LoadLevel()`. Esto carga la escena del nivel 1 del juego. En resumen, este script controla el inicio de una partida en el juego. Cuando se presiona el botón de fuego, se reinician los puntos y las vidas del juego, y se carga la escena del nivel 1 para comenzar la partida. Script Pelota using System.Collections; using System.Collections.Generic; using UnityEngine; public class Pelota : MonoBehaviour { // Start is called before the first frame update public float velocidadInicial = 600f; public Rigidbody rig; bool enJuego; Vector3 posicionInicial; public Transform barra; private void Awake() { barra = GetComponentInParent<Transform>(); } void Start() { posicionInicial = transform.position; } public void Reset() { transform.position = posicionInicial; transform.SetParent(barra); enJuego = false; DetenerMovimiento(); } public void DetenerMovimiento() { rig.isKinematic = true;
  • 8. rig.velocity = Vector3.zero; } // Update is called once per frame void Update() { if (!enJuego && Input.GetButtonDown("Fire1")) { enJuego = true; transform.SetParent(null); rig.isKinematic = false; rig.AddForce(new Vector3(velocidadInicial, velocidadInicial, 0)); } } } Explícame paso a paso el código generado c# Explicación de código VelocidadInicial generado en C# 1. Se importan las siguientes bibliotecas:  `System.Collections`: Contiene las interfaces y clases que definen diversas colecciones de objetos, como listas, colas, diccionarios, etc.  `System.Collections.Generic`: Proporciona interfaces y clases genéricas, como `List<T>`, `Dictionary<TKey, TValue>`, etc.  `UnityEngine`: Contiene las clases y funciones para interactuar con el motor de juego Unity. 2. Se define una clase llamada "Pelota" que hereda de MonoBehaviour, indicando que es un componente de Unity que se puede adjuntar a un objeto en el escenario. 3. Se declaran los siguientes campos y variables públicas:  `public float velocidadInicial = 600f;`: Una variable pública de tipo float que representa la velocidad inicial de la pelota.  `public Rigidbody rig;`: Un Rigidbody público que representa el componente Rigidbody asociado a la pelota.  `bool enJuego;`: Una variable booleana que indica si la pelota está en juego o no.  `Vector3 posicionInicial;`: Una variable que almacena la posición inicial de la pelota.
  • 9. 4. El método `Awake()` se ejecuta antes del método `Start()` y se utiliza para obtener una referencia al componente Transform del objeto padre de la pelota, que probablemente sea la barra de juego. La referencia se asigna a la variable `barra` utilizando `GetComponentInParent<Transform>()`. 5. En el método `Start()`, se asigna la posición inicial de la pelota a la variable `posicionInicial` utilizando `transform.position`. 6. El método público `Reset()` se define para restablecer la posición y el estado de la pelota a los valores iniciales. Dentro del método, se realiza lo siguiente:  Se asigna la posición inicial a `transform.position`.  Se establece el padre de la pelota en el objeto de la barra utilizando `transform.SetParent(barra)`. Esto probablemente hace que la pelota esté anclada a la barra en el inicio del juego.  Se establece `enJuego` en falso para indicar que la pelota no está en juego.  Se llama al método `DetenerMovimiento()` para detener el movimiento de la pelota. 7. El método público `DetenerMovimiento()` se define para detener el movimiento de la pelota. Dentro del método, se realiza lo siguiente:  Se establece `rig.isKinematic` en verdadero para hacer que el Rigidbody de la pelota sea kinemático y no se vea afectado por las fuerzas externas.  Se establece `rig.velocity` en `Vector3.zero` para detener la velocidad de la pelota y evitar cualquier movimiento residual. 8. En el método `Update()`, se realiza lo siguiente:  Se verifica si la pelota no está en juego (`!enJuego`) y se ha presionado el botón de fuego (`Input.GetButtonDown("Fire1")`), que generalmente está asociado al botón izquierdo del mouse o a la tecla de espacio.  Si se cumple la condición, se realiza lo siguiente:  Se establece `enJuego` en verdadero para indicar que la pelota está en juego.
  • 10.  Se establece el padre de la pelota en `null` utilizando `transform.SetParent(null)`, lo que hace que la pelota deje de estar anclada a la barra.  Se establece `rig.isKinematic` en falso para permitir que el Rigidbody de la pelota responda a las fuerzas físicas.  Se agrega una fuerza a la pelota utilizando `rig.AddForce(new Vector3(velocidadInicial, velocidadInicial, 0))`. La dirección y magnitud de la fuerza se determinan mediante el vector `(velocidadInicial, velocidadInicial, 0)`, lo que hace que la pelota se mueva en diagonal hacia arriba y a la derecha con una velocidad inicial especificada. En resumen, este script controla el comportamiento de una pelota en el juego. Al inicio, la pelota está anclada a la barra y no está en juego. Cuando se presiona el botón de fuego, la pelota deja de estar anclada a la barra, se habilita su Rigidbody y se le aplica una fuerza inicial para iniciar el movimiento. El método `Reset()` se utiliza para reiniciar la posición y el estado de la pelota, y el método `DetenerMovimiento()` se utiliza para detener su movimiento en cualquier momento. Script Puntos using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public class Puntos : MonoBehaviour { // Start is called before the first frame update public static int puntos = 0; public Text textoPuntos; public GameObject nivelCompletado; public GameObject juegoCompletado; public SiguienteNivel siguienteNivel; public Pelota pelota; public Barra barra; public Transform contenedorBloques; void Start() { ActualizarMarcadorPuntos(); }
  • 11. void ActualizarMarcadorPuntos() { textoPuntos.text = "Puntos: " + Puntos.puntos; } public void GanarPunto() { Puntos.puntos++; ActualizarMarcadorPuntos(); if(contenedorBloques.childCount <= 0) { pelota.DetenerMovimiento(); barra.enabled = false; if(siguienteNivel.EsUltimoNivel()) { juegoCompletado.SetActive(true); } else { nivelCompletado.SetActive(true); } siguienteNivel.ActivarCarga(); } } } Explícame paso a paso el código generado c# Explicación de código Puntos generado en C# 1. Se importan las siguientes bibliotecas:  `System.Collections`: Contiene las interfaces y clases que definen diversas colecciones de objetos, como listas, colas, diccionarios, etc.  `System.Collections.Generic`: Proporciona interfaces y clases genéricas, como `List<T>`, `Dictionary<TKey, TValue>`, etc.  `UnityEngine`: Contiene las clases y funciones para interactuar con el motor de juego Unity.  `UnityEngine.UI`: Proporciona las clases necesarias para interactuar con la interfaz de usuario en Unity. 2. Se define una clase llamada "Puntos" que hereda de MonoBehaviour, indicando que es un componente de Unity que se puede adjuntar a un objeto en el escenario.
  • 12. 3. Se declaran los siguientes campos y variables públicas:  `public static int puntos = 0;`: Una variable estática de tipo entero que representa la puntuación actual del juego.  `public Text textoPuntos;`: Un campo público de tipo Text (proveniente de UnityEngine.UI) que representa el componente de texto en la interfaz de usuario donde se mostrará la puntuación.  `public GameObject nivelCompletado;`: Un objeto de juego (GameObject) que representa un panel o elemento visual que se mostrará cuando se complete un nivel.  `public GameObject juegoCompletado;`: Un objeto de juego (GameObject) que representa un panel o elemento visual que se mostrará cuando se complete todo el juego.  `public SiguienteNivel siguienteNivel;`: Un componente de tipo SiguienteNivel (que probablemente es otro script) que controla el avance al siguiente nivel del juego.  `public Pelota pelota;`: Un componente de tipo Pelota (que probablemente es otro script) que controla el comportamiento de la pelota en el juego.  `public Barra barra;`: Un componente de tipo Barra (que probablemente es otro script) que controla el comportamiento de la barra en el juego.  `public Transform contenedorBloques;`: Un componente de tipo Transform que representa un contenedor de bloques en el juego. 4. El método `Start()` se llama automáticamente al inicio del juego. En este método, se llama al método `ActualizarMarcadorPuntos()`. 5. El método `ActualizarMarcadorPuntos()` se define para actualizar el texto que muestra la puntuación en la interfaz de usuario. Dentro del método, se realiza lo siguiente:  Se establece el texto del componente `textoPuntos` utilizando la propiedad `text` y concatenando la palabra "Puntos" con el valor actual de la variable estática `Puntos.puntos`.
  • 13. 6. El método público `GanarPunto()` se define para incrementar la puntuación del juego y realizar comprobaciones adicionales. Dentro del método, se realiza lo siguiente:  Se incrementa la variable estática `Puntos.puntos` en 1.  Se llama al método `ActualizarMarcadorPuntos()` para actualizar el texto de la puntuación en la interfaz de usuario.  Se verifica si no quedan bloques en el contenedor (`contenedorBloques.childCount <= 0`):  Si no quedan bloques, se detiene el movimiento de la pelota llamando al método `pelota.DetenerMovimiento()`.  Se deshabilita el componente `barra` estableciendo su propiedad `enabled` en falso.  Se verifica si es el último nivel (`siguienteNivel.EsUltimoNivel()`):  Si es el último nivel, se activa el objeto de juego `juegoCompletado`, que muestra un panel o mensaje de juego completado.  Si no es el último nivel, se activa el objeto de juego `nivelCompletado`, que muestra un panel o mensaje de nivel completado.  Se llama al método `siguienteNivel.ActivarCarga()` para avanzar al siguiente nivel. En resumen, este script controla la puntuación en el juego y realiza acciones relacionadas cuando se gana un punto. Actualiza el marcador de puntuación en la interfaz de usuario, detiene el movimiento de la pelota y deshabilita la barra cuando se completa un nivel o el juego completo. También permite avanzar al siguiente nivel mediante el uso del componente `siguienteNivel`. Script Vidas using System.Collections; using System.Collections.Generic; using UnityEngine; public class SiguienteNivel : MonoBehaviour { public string nivelACargar; public float retraso; // Start is called before the first frame update [ContextMenu("Activar Carga")] public void ActivarCarga()
  • 14. { Invoke("CargarNivel", retraso); } [System.Obsolete] public void CargarNivel() { Application.LoadLevel(nivelACargar); } public bool EsUltimoNivel() { return nivelACargar == "Portada"; } } Explícame paso a paso el código generado c# Explicación de código SiguienteNivel generado en C# 1. Se importa la siguiente biblioteca:  `System.Collections`: Contiene las interfaces y clases que definen diversas colecciones de objetos, como listas, colas, diccionarios, etc.  `UnityEngine`: Contiene las clases y funciones para interactuar con el motor de juego Unity. 2. Se define una clase llamada "SiguienteNivel" que hereda de MonoBehaviour, indicando que es un componente de Unity que se puede adjuntar a un objeto en el escenario. 3. Se declaran los siguientes campos y variables públicas:  `public string nivelACargar;`: Una variable de tipo cadena que indica el nombre del nivel que se cargará al activar la carga.  `public float retraso;`: Una variable de tipo flotante que representa el tiempo de retraso antes de cargar el siguiente nivel. 4. El atributo `[ContextMenu("Activar Carga")]` se utiliza para agregar un botón contextual en el editor de Unity que permite activar la carga manualmente desde el editor. 5. El método público `ActivarCarga()` se define para activar la carga del siguiente nivel con un retraso especificado. Dentro del método, se realiza lo siguiente:  Se utiliza `Invoke("CargarNivel", retraso)` para invocar el método `CargarNivel()` después de un tiempo determinado.
  • 15. 6. El método público `CargarNivel()` se define para cargar el nivel especificado. Dentro del método, se utiliza `Application.LoadLevel(nivelACargar)` para cargar el nivel utilizando el nombre especificado. 7. El método público `EsUltimoNivel()` se define para comprobar si el nivel actual es el último nivel. Dentro del método, se realiza lo siguiente:  Se compara el valor de `nivelACargar` con el nombre del nivel de portada ("Portada").  Si el valor de `nivelACargar` es igual a "Portada", se devuelve `true`, lo que indica que es el último nivel. En resumen, este script permite cargar el siguiente nivel en el juego. Utiliza el método `Invoke` para activar la carga con un retraso especificado. Además, proporciona un método para comprobar si el nivel actual es el último nivel. Script SonidosPelotas using System.Collections; using System.Collections.Generic; using UnityEngine; public class SonidosPelota : MonoBehaviour { public AudioSource rebote; public AudioSource punto; void OnCollisionEnter(Collision otro) { if(otro.gameObject.CompareTag("Bloque")) { punto.Play(); } else { rebote.Play(); } } } Explícame paso a paso el código generado c#
  • 16. Explicación de código SonidosPelotas generado en C# 1. Se importa la siguiente biblioteca:  `System.Collections`: Contiene las interfaces y clases que definen diversas colecciones de objetos, como listas, colas, diccionarios, entre otros.  `UnityEngine`: Contiene las clases y funciones para interactuar con el motor de juego Unity. 2. Se define una clase llamada "SonidosPelota" que hereda de MonoBehaviour, indicando que es un componente de Unity que se puede adjuntar a un objeto en el escenario. 3. Se declaran los siguientes campos y variables públicas:  `public AudioSource rebote;`: Un componente de tipo AudioSource que representa el sonido de rebote de la pelota.  `public AudioSource punto;`: Un componente de tipo AudioSource que representa el sonido al ganar un punto al golpear un bloque. 4. El método `OnCollisionEnter(Collision otro)` se llama automáticamente cuando la pelota colisiona con otro objeto. Dentro del método, se realiza lo siguiente:  Se verifica si el objeto con el que colisionó la pelota tiene la etiqueta (tag) "Bloque" utilizando `otro.gameObject.CompareTag("Bloque")`.  Si el objeto tiene la etiqueta "Bloque", se reproduce el sonido de punto llamando a `punto.Play()`.  Si el objeto no tiene la etiqueta "Bloque", se reproduce el sonido de rebote llamando a `rebote.Play()`. En resumen, este script controla los sonidos relacionados con la pelota en el juego. Cuando la pelota colisiona con un objeto, se verifica si ese objeto tiene la etiqueta "Bloque". Si es así, se reproduce un sonido de punto. Si el objeto no tiene la etiqueta "Bloque", se reproduce un sonido de rebote. Los sonidos se reproducen utilizando los componentes de tipo AudioSource especificados en los campos `rebote` y `punto`.
  • 17. Script Suelo using System.Collections; using System.Collections.Generic; using UnityEngine; public class Suelo : MonoBehaviour { public Vidas vidas; void OnTriggerEnter() { vidas.PerderVida(); } } Explícame paso a paso el código generado c# Explicación de código Suelo generado en C# 1. Se importa la siguiente biblioteca:  `System.Collections`: Contiene las interfaces y clases que definen diversas colecciones de objetos, como listas, colas, diccionarios, etc.  `UnityEngine`: Contiene las clases y funciones para interactuar con el motor de juego Unity. 2. Se define una clase llamada "Suelo" que hereda de MonoBehaviour, indicando que es un componente de Unity que se puede adjuntar a un objeto en el escenario. 3. Se declara el siguiente campo público:  `public Vidas vidas;`: Una referencia al script "Vidas" que controla el número de vidas en el juego. 4. El método `OnTriggerEnter()` se llama automáticamente cuando un objeto con un Collider (en este caso, la pelota) entra en contacto con el Collider del suelo. Dentro del método, se realiza lo siguiente:  Se llama al método `PerderVida()` del script "Vidas" a través de la referencia `vidas`. Este método se encarga de disminuir el contador de vidas en el juego. En resumen, este script controla la interacción entre la pelota y el suelo en el juego. Cuando la pelota colisiona con el Collider del suelo, se llama al método `PerderVida()` del script "Vidas" para disminuir el contador de vidas. La referencia al script "Vidas" se establece a través del campo público `vidas`, que se asigna en el editor de Unity.
  • 18. Script Vidas using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public class Vidas : MonoBehaviour { public static int vidas = 3; public Text textoVidas; public Pelota pelota; public Barra barra; public GameObject gameOver; public SiguienteNivel siguienteNivel; // Start is called before the first frame update void Start() { ActualizarMarcadorVidas(); } void ActualizarMarcadorVidas() { textoVidas.text = "Vidas: " + Vidas.vidas; } // Update is called once per frame public void PerderVida() { if (vidas <= 0) return; Vidas.vidas--; ActualizarMarcadorVidas(); if(vidas <= 0) { //Mostrar GameOver gameOver.SetActive(true); pelota.DetenerMovimiento(); barra.enabled = false; siguienteNivel.nivelACargar = "Portada"; siguienteNivel.ActivarCarga(); } else { barra.Reset(); pelota.Reset(); } } }
  • 19. Explicación de código Vidas generado en C# Claro, a continuación te explico paso a paso el código generado en C#: 1. Se importa la siguiente biblioteca:  `System.Collections`: Contiene las interfaces y clases que definen diversas colecciones de objetos, como listas, colas, diccionarios, etc.  `UnityEngine`: Contiene las clases y funciones para interactuar con el motor de juego Unity.  `UnityEngine.UI`: Contiene las clases y funciones relacionadas con la interfaz de usuario en Unity. 2. Se define una clase llamada "Vidas" que hereda de MonoBehaviour, indicando que es un componente de Unity que se puede adjuntar a un objeto en el escenario. 3. Se declaran los siguientes campos y variables públicas:  `public static int vidas = 3;`: Una variable estática de tipo entero que representa la cantidad inicial de vidas.  `public Text textoVidas;`: Un componente de tipo Text que muestra el número de vidas en la interfaz de usuario.  `public Pelota pelota;`: Una referencia al script "Pelota" que controla el comportamiento de la pelota en el juego.  `public Barra barra;`: Una referencia al script "Barra" que controla el comportamiento de la barra en el juego.  `public GameObject gameOver;`: Un objeto de tipo GameObject que representa el panel de Game Over en la interfaz de usuario.  `public SiguienteNivel siguienteNivel;`: Una referencia al script "SiguienteNivel" que controla la carga del siguiente nivel en el juego. 4. El método `Start()` se llama automáticamente al inicio del juego. Dentro del método, se realiza lo siguiente:  Se llama al método `ActualizarMarcadorVidas()` para mostrar el número de vidas en la interfaz de usuario. 5. El método `ActualizarMarcadorVidas()` se define para actualizar el texto que muestra el número de vidas en la interfaz de usuario. Dentro del método, se realiza lo siguiente:
  • 20.  Se actualiza el texto de `textoVidas` concatenando la palabra "Vidas" con el valor de `Vidas.vidas`. 6. El método público `PerderVida()` se define para disminuir el contador de vidas y realizar las acciones correspondientes cuando se pierde una vida. Dentro del método, se realiza lo siguiente:  Se verifica si el contador de vidas (`vidas`) es menor o igual a 0. Si es así, se sale del método utilizando la instrucción `return` sin realizar ninguna acción adicional.  Se disminuye el contador de vidas (`Vidas.vidas--`) y se llama al método `ActualizarMarcadorVidas()` para reflejar el cambio en la interfaz de usuario.  Se verifica si el contador de vidas ahora es menor o igual a 0. Si es así, se ejecutan las siguientes acciones:  Se activa el objeto `gameOver` para mostrar el panel de Game Over en la interfaz de usuario.  Se detiene el movimiento de la pelota llamando al método `DetenerMovimiento()` del script "Pelota".  Se deshabilita el comportamiento de la barra estableciendo `barra.enabled = false`.  Se configura el siguiente nivel a cargar como "Portada" en el script "SiguienteNivel".  Se llama al método `ActivarCarga()` del script "SiguienteNivel" para cargar el siguiente nivel.  Si el contador de vidas 5. es mayor que 0, se ejecutan las siguientes acciones:  Se llama al método `Reset()` del script "Barra" para reiniciar la posición de la barra.  Se llama al método `Reset()` del script "Pelota" para reiniciar la posición de la pelota. En resumen, este script controla la cantidad de vidas en el juego y las acciones correspondientes cuando se pierde una vida. Actualiza el marcador de vidas en la interfaz de usuario, muestra el panel de Game Over cuando se quedan sin vidas, detiene el movimiento de la pelota y deshabilita el comportamiento de la barra. También reinicia la posición de la barra y la pelota cuando se pierde una vida.