У меня есть игра Breakout, в которой в какой-то момент я обнаруживаю столкновение между мячом и веслом примерно так:
// Ball class
rectangle.Intersects(paddle.Rectangle);
Есть ли способ, которым я могу получить точные координаты столкновения или какие-либо подробности о нем, с текущим XNA API
?
Я подумал о некоторых базовых вычислениях, таких как сравнение точных координат каждого объекта в момент столкновения. Это будет выглядеть примерно так:
// 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
Но я не уверен, что это правильный способ сделать это.
У вас есть какие-нибудь советы по поводу двигателя, который мне, возможно, придется использовать для достижения этой цели? Или даже хорошие практики кодирования с использованием этого метода?
источник
get the rectangle where the two overlap
Доступна ли эта функция наXNA API
или мне нужно загрузить некоторые дополнительные материалы, напримерPlatformer Starter Kit
?Rectangle Rectangle.Intersects(...)
.rectangle.X
Е.rectangle.Y
Или что-либо еще, к чему вы хотите получить доступ.Обновление: если вы используете MonoGame, то, начиная с бета-версии 3.0,
Rectangle Rectangle.Intersect(rectangle, rectangle)
не существует. Вместо этого вы можете использовать приведенный ниже код из набора XNA Platformer.Вы можете скачать XNA Platformer Starter Kit ( портирован на Windows 7 ). Он поставляется с вспомогательным методом расширения, который возвращает прямоугольник, описывающий пересечение двух прямоугольников:
источник
ssb
, но большое спасибо за это. Я обязательно попаду в этот порт! Большое спасибо!