2011-08-29 2 views
1

Хорошо, так что в настоящее время у меня есть обнаружение коллизий в классе Game1 (Основной класс). Например: прямоугольное столкновение между моим игроком и мячом. Я не хочу, чтобы эти столкновения были в моем классе Game1. В каком классе люди часто проверяют обнаружение коллизий и как?Очень простой вопрос о обнаружении столкновений. XNA Beginner

Спасибо в продвижении.

+0

Я бы определил, в какой области виджета будет происходить столкновение в классе виджетов. Затем я проверил бы на столкновение внутри кода, который перемещает игрока. Таким образом, у вас могут быть разные виджеты, которые будут иметь разные области конфликтов. –

+0

@ Ramhound Я действительно не понял, что вы сказали, может быть, это из-за моего плохого английского языка, но позвольте мне объяснить вам, что я прошу в любом случае: Где я могу проверить столкновение. –

+0

@ Ramhound Если мне нужно проверить столкновение между мячом и игроком, в каком классе я должен реализовать код? и как? –

ответ

4

Я бы сделал класс под названием CollisionManager. Таким образом, вы можете кодировать все свои столкновения в этом классе и использовать их в своем классе Game. Вы можете в принципе назвать это тем, что хотите, поскольку это личное предпочтение. Что бы вы ни назвали.

Пример обнаружения столкновения можно найти здесь: example. Кредит принадлежит писателю этой статьи, хотя и не я.

Еще больше ресурсов можно найти на странице App Hub. Здесь вы найдете гораздо больше информации о XNA, а не только о столкновениях.

Надеюсь, это помогло!

Edit:

В основном у вас есть класс CollissionManager, который имеет все функции, необходимые для вашей игры относительно столкновений. Например, вы спросили насчет весла и шара. Таким образом, вы можете написать функцию с параметром Paddle и Ball as. Затем вы можете проверить эту функцию, если они сталкиваются.

protected boolean PaddleBallCollision(Rectangle paddle, Rectangle ball) 
{ 
if (paddle.Intersects(ball)) return paddleHit= true; 
} 

В классе игры вы можете просто сделать следующее:

using projectname.CollisionManager; 

И в Update (я думаю, по крайней мере, это был год, так как я использовал XNA), вы можете проверить, если они сталкиваются с помощью вызов вашей функции.

boolean paddleHit = CollisionManager.PaddleBallCollision(paddle,ball) 

if (paddleHit == true) 
{ 
    //TODO when hit 
} 

Что-то вроде этого верю. Поскольку шар круглый, Прямоугольник не был бы лучшим для него, но я не могу сказать, что это идеальная вещь с моей головы. Как я уже сказал, прошло какое-то время, так как я использовал это, но это должно дать вам общее представление!

+0

Вы дали мне примеры обнаружения столкновений, это не то, что мне нужно. –

+0

Это то, что мне нужно: http://stackoverflow.com/questions/7234098/in-what-class-should-i-detect-collisions –

+0

Если у вас есть ответ на этот вопрос, отправьте его здесь, и вы получите мой «V» и скорость роста. –

Смежные вопросы