Tengo un juego Breakout en el que, en algún momento, detecto la colisión entre la pelota y la pala con algo como esto:
// Ball class
rectangle.Intersects(paddle.Rectangle);
¿Hay alguna manera de obtener las coordenadas exactas de la colisión, o algún detalle al respecto, con la corriente XNA API
?
Pensé en hacer algunos cálculos básicos, como comparar las coordenadas exactas de cada objeto en el momento de la colisión. Se vería algo así:
// Ball class
if((rectangle.X - paddle.Rectangle.X) < (paddle.Rectangle.Width / 2))
// Collision happened on the left side
else
// Collision happened on the right side
Pero no estoy seguro de que esta sea la forma correcta de hacerlo.
¿Ustedes tienen algún consejo sobre tal vez un motor que podría tener que usar para lograr eso? ¿O incluso buenas prácticas de codificación con este método?
fuente
get the rectangle where the two overlap
funcionalidad está disponible en elXNA API
o tengo que descargar algunas cosas adicionales, como elPlatformer Starter Kit
?Rectangle Rectangle.Intersects(...)
.rectangle.X
orectangle.Y
o lo que desea acceder.Actualización: si está utilizando MonoGame, a partir de 3.0 beta,
Rectangle Rectangle.Intersect(rectangle, rectangle)
no existe. En su lugar, puede usar el siguiente código del kit XNA Platformer.Puede descargar XNA Platformer Starter Kit ( portado a Windows 7 ). Se envía con un método de extensión auxiliar que devuelve un rectángulo que describe la intersección de dos rectángulos:
fuente
ssb
, pero muchas gracias por esto. ¡Seguro que entraré en este puerto! ¡Muchas gracias!