| Volver al Inicio | Microsoft Student Tech Club: Universidad Libre |
Tutorial de XNA: Haciendo que el cohete acierte en el enemigo
El método que actualiza los cohetes en Game1.cs tiene ahora este código (no se modifica ningún otro código):
//Método llamado desde Update
public void ActualizaCohetes()
{
//Va de cohete en bala
foreach (ObjetosJuego cohete in cohetes)
if (cohete.esta_activo == true)
{
//Solo es actualizar la velocidad porque el vector se actualiza gracias a esa magnitud
cohete.posicion += cohete.velocidad;//Chequea la colisión //Deduce el rectángulo del cohete y debe tener en cuenta el tamaño con que se esté dibujando en pantalla en Draw()
Rectangle rectCohete = new Rectangle((int)cohete.posicion.X, (int)cohete.posicion.Y, (int) (cohete.sprite.Width*0.2), (int) (cohete.sprite.Height*0.2)); //Chequea de enemigo en enemigo si el cohete lo colisiona
foreach (ObjetosJuego enemigo in enemigos)
{
//Deduce el rectángulo del enemigo y debe tener en cuenta el tamaño con que se esté dibujando en pantalla en Draw()
Rectangle rectEnemigo = new Rectangle((int)enemigo.posicion.X, (int)enemigo.posicion.Y, (int) (enemigo.sprite.Width*0.2), (int) (enemigo.sprite.Height*0.2)); //Si ambos rectángulos se intersectan
if (rectCohete.Intersects(rectEnemigo) == true)
{
enemigo.esta_activo = false; //inactiva el enemigo
cohete.esta_activo = false; //inactiva el cohete
break;
}
} //Si el cohete se sale de la pantalla entonces se desactiva
if (rectFondo.Contains(new Point((int)cohete.posicion.X, (int)cohete.posicion.Y)) == false)
cohete.esta_activo = false;
}
} |
Este es el resultado:

| Volver al Inicio | Célula Microsoft. Universidad Libre |