public Pelota(Texture2D textura, Point size) : base(textura, size) { rand = new Random(DateTime.Now.Second + DateTime.Now.Millisecond); posicionActual = posicionInicial = new Vector2(Coordenadas.CentroDeVentana.X, Coordenadas.CentroDeVentana.Y); this.size = new Rectangle((int)posicionInicial.X, (int)posicionInicial.Y, size.X, size.Y); ultimaNotificacion = TipoDeColision.Ninguno; DecidirDireccion(); }
public void NotificarColision(TipoDeColision sender) { if (ultimaNotificacion == sender) { return; } switch (sender) { case TipoDeColision.Pared: velocidad.Y *= -1; ultimaNotificacion = TipoDeColision.Pared; break; case TipoDeColision.Paleta: velocidad.X *= -1; float x = rand.Next(0, 100) / 50f; if (velocidad.Y > 0) { if (velocidad.Y - x > 0) { velocidad.Y -= x; } else { velocidad.Y += x; } } else { if (velocidad.Y + x < 0) { velocidad.Y += x; } else { velocidad.Y -= x; } } ultimaNotificacion = TipoDeColision.Paleta; break; case TipoDeColision.Gol: posicionActual = posicionInicial; DecidirDireccion(); ultimaNotificacion = TipoDeColision.Gol; break; case TipoDeColision.Ninguno: ultimaNotificacion = TipoDeColision.Ninguno; break; } }