Home | Clases | Unity: Videojuego estilo Space Shooter | Puntuación

Puntuación


Puntuación

Vamos a introducir un sistema de puntuaciones de modo que cada vez que la nave destruya un asteroide sumara 10 puntos utilizando una estructura de UI similar a la de juegos anteriores.

Genera un nuevo UI > Text y llámalo TextoContador.
Modifícalo a tu gusto y ánclalo arriba a la izquierda (con algo de padding)
Modifica el código de los script DestruirPorContacto y GameManager y para que cuente las puntuaciones:


using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class DestruirPorContacto : MonoBehaviour
{

public GameObject explosion;
public GameObject explosionNave;
private GameManager gameManager;

void Start()
{
//Busco el script de GameManager
gameManager = FindObjectOfType<GameManager>();
}

//Al entrar en el objeto
void OnTriggerEnter(Collider other)
{
//Para que no se destruya con los límites
if (other.name != "Limites")
{

//Explosión del disparo en su posición y rotación
Instantiate(explosion, transform.position, transform.rotation);

if (other.name == "Nave")
{
//Explosión de la nave en su posición y rotación
Instantiate(explosionNave, other.transform.position, other.transform.rotation);

}

//Destruyo el disparo (con el que ha chocado)
Destroy(other.gameObject);

//Destruyo el asteroide
Destroy(gameObject);

//Actualizo el contador
gameManager.actualizarContador();
}
}
}



using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class GameManager : MonoBehaviour {

public GameObject asteroide; //objeto a instanciar
public Vector3 posicion; //posición (límites) en la que instanciar
public int numeroDeAsteroides; //número de objetos en cada ola
public float esperaInicial;
public float esperaEntreAsteroides;
public float esperaEntreOlas;
public Text textoContador; //caja de texto para el contador
public int contador; //Entero para contar los puntos

void Start () {

StartCoroutine(crearAsteroides());

//Inicializo el contador
textoContador.text = "Puntuación: 0";

}

IEnumerator crearAsteroides(){

//Espera inicial
yield return new WaitForSeconds(esperaInicial);

while (true){

for (int i = 0; i < numeroDeAsteroides; i++)
{
//Posición aleatoria entre los límites (positivo y negativo) que establezcamos
Vector3 posicionAsteroide = new Vector3(Random.Range(-posicion.x, posicion.x), posicion.y, posicion.z);
//Rotación
Quaternion rotacionAsteroide = Quaternion.identity;
//Instancio el asteroide
Instantiate(asteroide, posicionAsteroide, rotacionAsteroide);
//Espera entre asteroides
yield return new WaitForSeconds(esperaEntreAsteroides);
}

//Espera entre olas
yield return new WaitForSeconds(esperaEntreOlas);

}

}

//Actualizo el contador (desde DestruirPorContacto)
public void actualizarContador(){

contador += 10;
textoContador.text = "Puntuación: " + contador;

}
}


Para finalizar, asocia la variable Texto Contador del GameManager con el objeto TextoContador. Un ejemplo del resultado final podría ser el siguiente:


Fecha de publicación: 15/10/2018
Asignaturas: realización de proyectos multimedia interactivosdesarrollo de entornos interactivos multidispositivo
Temas: unity space shooter
Utilizamos cookies propias y de terceros para mejorar su experiencia en la navegación. Al seguir navegando entendemos que acepta su uso.
Si lo desea, consulte nuestras políticas de privacidad y cookies
ENTENDIDO
[X] Cerrar

Contacta conmigo


[X] Cerrar

Acceso alumnos