Предлагается 2 метода;C# XNA Рассчитать расстояние между прямоугольниками (вращение)
if(rectangle.Intersects(otherRectangle))
{
//collision stuff
}
Catch: работает только с невращающимися прямоугольниками.
if(Vector2.Distance(player.pos, enemy.pos) < 50)
{
//collision stuff
}
Catch: работает только с кругами.
То, что я хочу, чтобы вычислить х и у в этом образе:
Факты
Ширина и длина обоих прямоугольников определены, наряду с их вращением. Я могу рассчитать D, используя теорему Пифагора. Но TRUE расстояние D - (X + Y).
Общий подход
Очевидно, х и у могут быть вычислены с помощью правила косинуса. Но у меня есть только ширина или длина и угол между двумя фигурами.
Усложнение
Плюс, это должно работать на любом повороте. Прямоугольник слева можно вращать в любом направлении, а x будет отличаться в зависимости от указанного вращения.
Вопрос
Как рассчитать х и у? Я просто хочу, чтобы эффективный метод обнаружения столкновений был более сложным, чем ограничивающие прямоугольники и теорема Пифагора.
«Я просто хочу, чтобы эффективный метод обнаружения столкновений был более сложным ...» Будьте осторожны, чтобы не искать сложности ... он найдет вас, и вы можете пожалеть об этом. Серьезно, хотя, ищите SAT. –
Итак, вы хотите использовать теорему Пифагора или нет? Вы также можете изучить методы Vector2, такие как 'Vector2.Dot()' – davidsbro
Мне нужно использовать теорему Пифагора в любом случае, чтобы получить расстояние. – ShadowByte