Buenas gente. Hace un tiempo que me he ido poniendo poco a poco con C# y XNA. El caso es que ya me decidí a empezar mi primer juego, el pong! El caso es que tengo un problemilla con el detector de colisiones. Tengo hecho lo que posiblemente sea la version mas sencilla y cutre q se pueda hacer, y no se como mejorarla.
Os pongo en situación: tengo el pong, con su respectivas paletas, llamemosla player1 y player2 con su rectangulo para hacer un intersect con el rectangulo de la bola. El caso sq si la bola choca de frente con el player1, no hay problema, rebota y punto, pero si la bola choca digamos q por la parte de arriba de la pala o en diagonal, hace un efecto raro. Os pongo el codigo de la colision el cual pertenece a la clase bola:
private void Colision()
{
if (posicion.Y < 0 || posicion.Y + tamano > pantalla.Height)
velocidad.Y = -velocidad.Y;
if (rectangulo.Intersects(player1.rectangulo) || rectangulo.Intersects(player2.rectangulo))
{
velocidad.X = -velocidad.X;
}
}
Ese codigo para entrar defrente no pasa nada, pero si entra por arriba, empieza a cambiar la direccion de la velocidad.X como en un bucle.
El caso sq he intentao arreglarlo intentando hacer q si entrara por arriba, rebotara para arriba, pero no hecho mas que joderlo mas jaja. Tambien he pensado q lo mejor sería q solo detectara una colision con la pala por segundo o cada 2. Pero realmente no se como poder hacerlo. He intentado trastear con la clase GameTime pero no he sacado nada en claro.
Muchas gracias por adelantado!! Un saludo!