Eu tenho um jogo Breakout no qual, em algum momento, eu detecto a colisão entre a bola e a raquete com algo assim:
// Ball class
rectangle.Intersects(paddle.Rectangle);
Existe alguma maneira de obter as coordenadas exatas da colisão, ou quaisquer detalhes sobre ela, com a corrente XNA API
?
Pensei em fazer alguns cálculos básicos, como comparar as coordenadas exatas de cada objeto no momento da colisão. Seria algo como isto:
// 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
Mas não tenho certeza se essa é a maneira correta de fazer isso.
Vocês têm alguma dica sobre um mecanismo que talvez eu precise usar para conseguir isso? Ou mesmo boas práticas de codificação usando esse método?
fonte
get the rectangle where the two overlap
funcionalidade está disponívelXNA API
ou eu tenho que baixar algumas coisas extras, como aPlatformer Starter Kit
?Rectangle Rectangle.Intersects(...)
.rectangle.X
ou seja,rectangle.Y
ou o que você deseja acessar.Atualização: se você estiver usando o MonoGame, a partir da versão 3.0 beta,
Rectangle Rectangle.Intersect(rectangle, rectangle)
não existe. Você pode usar o código abaixo do kit XNA Platformer.Você pode fazer o download do XNA Platformer Starter Kit ( portado para Windows 7 ). É fornecido com um método de extensão auxiliar que retorna um retângulo que descreve a interseção de dois retângulos:
fonte
ssb
, mas muito obrigado por isso. Com certeza vou entrar neste porto! Muito Obrigado!