Antes que nada, mi pregunta no es realmente específica para C# o XNA, pero mis ejemplos de código los usarán.Detectar colisión entre un objeto en movimiento y uno inmóvil
Actualmente estoy tratando de hacer un clon de Pong y me he encontrado con un problema de detección de colisión.
Cada objeto tiene una Velocidad específica (que es un Vector2), Posición (Vector2, también) y Velocidad (solo un flotador). En cada llamada a Update() del objeto, la posición se cambia de esta manera:
Velocity.Normalize();
Position += Velocity * Speed;
Al principio, sólo comprobado si había actualmente una colisión entre dos objetos con un simple Intersects() llamada de los rectángulos de los objetos. Rápidamente me di cuenta de que no solo podía comprobar si el objeto era actualmente colisionando con otro, sino que si el objeto colisionó con un objeto en camino. Solo verificando si dos objetos colisionaban hacía que la pelota atravesara la paleta cuando la velocidad era demasiado alta.
Intenté cosas diferentes para solucionar el problema, pero ninguno de ellos pareció funcionar. Solo necesito una forma de verificar si dos objetos colisionaron en su camino, y si lo hicieron, si fue desde el horizontal, vertical o ambos (para cambiar la velocidad de la bola en consecuencia).
No necesariamente quiero la solución de inmediato, tal vez solo la idea básica de cómo implementar esto, y la codificaré yo mismo.
Gracias por su tiempo.
Gracias por el enlace. –