Обнаружив, где мяч попал в ограничительную рамку? XNA - PullRequest
2 голосов
/ 15 сентября 2011

только что начал с XNA, и этот пример очень помог бы!

Я сделал простой тест, где я получил некоторую местность и мяч, когда мяч попадает на местность, он останавливается.Это я делаю, устанавливая положение мяча на вершине ландшафта при столкновении.

На мой вопрос, я использую ограничивающую рамку для этого, но это не очень хорошо выглядит, если мяч попадает в местность слеваили правая сторона, так как она появляется сверху.Как я могу проверить его попадания в сторону?

Короткий сбой кода прямо сейчас:

if (playerOne.BoundingBox.Intersects(terrain.BoundingBox)

   playerOne.Position.Y = terrain.BoundingBox.Top;

Где playerOne - мяч.

Заранее спасибо!

Ответы [ 2 ]

1 голос
/ 15 сентября 2011

Для XNA BoundingBox нет встроенного способа определить, какая сторона столкнулась.Некоторые люди разделили ограничивающий прямоугольник на 6 блоков (по одному на каждое лицо вашего текущего блока, например, на стены вокруг комнаты), но это все равно создает небольшие проблемы в углах, где вы можете перекрываться, и вам нужно решить, какой блок вы считаетепервый удар.

Окончательное решение - создать плоскость для каждой грани вашего текущего ограничивающего прямоугольника, и если ограничивающий прямоугольник обнаружит столкновение, то проверьте наличие столкновений с каждой плоскостью.Когда у вас есть столкновение, оно может быть против 1, 2 или 3 самолетов одновременно.Если оно больше 1, вам нужно определить точки контакта точки / плоскости для каждой задействованной плоскости, и в зависимости от того, что ближе к предыдущей позиции мяча, это та сторона, в которую он попал первым.

1 голос
/ 15 сентября 2011

Я настоятельно рекомендую этот урок, он охватывает вашу точную ситуацию, разбивая летучую мышь на разные области и устанавливая различные условия для отскока столкновений с помощью Math Helpers и радиан.

http://ross-warren.co.uk/pong-clone-in-xna-4-0-for-windows/6/ 

Он на стороне, но вы должны быть в состоянии адаптировать принципы.

...