jairogarcíarincón

Destruir


351

El bloque

Lo primero que haremos será generar una caja en nuestra escena, que será el que nuestro Jugador tendrá que destruir.

Dicho bloque será un Cube con un nuevo material llamado Caja de color verde, al que además le vamos a añadir un componente de tipo Particle System que se activará cuando el Jugador lo destruya, así como un BoxCollider con la opción Is Trigger seleccionada.

El resultado podría ser similar al siguiente:





El script JugadorController

Una vez generado, solos nos faltaría modificar el script de JugadorController para que detecte la caja. Para ello, modifica su método OnTriggerEnter() de modo que dentro incluya el siguiente condicional:


//Si toca la caja
if (other.gameObject.CompareTag("Caja")){

//Si está pulsando el botón de pegar
if (Input.GetButton("Fire1")){
//Capturo el sistema de partículas de la caja y lo reproduzco
other.gameObject.GetComponent<ParticleSystem>().Play();
//Oculto objeto tras un tiempo
StartCoroutine(ocultarObjeto(other.gameObject));
}
else{
//Reproduzco la animación de morir
animator.SetBool("isDead", true);
//Corutina para cambiar el Collider
StartCoroutine(cambiarCollider());
//Deshabilito el script par aque ya no se mueva más
GetComponent<JugadorController>().enabled = false;
}

}


Y para finalizar, añade el método ocultarObjeto(), que se encargará de esperar un tiempo antes de ocultar la caja, de manera que de tiempo a reproducir la animación del sistema de partículas antes de que se oculte.


//Esperar
IEnumerator ocultarObjeto(GameObject objeto){

//Espero 1 segundos
yield return new WaitForSeconds(1.0f);

//Oculto objeto
objeto.SetActive(false);

}


Con esto estaría finalizado nuestro proyecto de animación de un humanoide.


Publicado el 02 de Diciembre de 2021

unityanimaciónhumanoide3d