Как добавить обнаружение столкновений в 2D-игру для автомобиля в XNA? - PullRequest
0 голосов
/ 30 ноября 2011

Правильно, я делаю 2д гоночную игру.До сих пор у меня машина двигалась и т.д. (с небольшой помощью, конечно), и мне было интересно, как мне добавить добавление обнаружения столкновений в XNA.Я взял часть бампера (со всей дорожки) и сделал ее отдельным файлом .png.И я подумывал добавить вокруг него коробку для обнаружения столкновений (поэтому, если «машина» ударяется о «бампер», возвращайтесь туда-сюда)Как добавить обнаружение столкновений в бампер и интегрировать его с автомобилем?Спасибо!

Ответы [ 2 ]

0 голосов
/ 21 июня 2013

Кажется, это было бы намного проще, если бы машины всегда были прямыми - не вращались.Если бы они были повернуты, вы бы не смогли использовать прямоугольники, чтобы помочь.Если вы это сделаете, то вместо этого вы можете включить бампер в car.png.Затем вы можете использовать координаты автомобиля и добавить определенные значения, чтобы получить длину и ширину области для бампера.Затем вы можете сделать

Rectangle bumperBoundingBox = new Rectangle
(
    (int)X_COORDINATE_OF_CAR, 
    (int)Y_COORDINATE_OF_CAR, 
    (int)X_COORDINATE_OF_CAR + WIDTH_OF_BUMPER, 
    (int)Y_COORDINATE_OF_CAR + HEIGHT_OF_BUMPER
);
Rectangle otherCarBoundingBox = new Rectangle( \* x, y, ... *\ );
bool carIsTouchingBumper = otherCarBoundingBox.Intersects(bumperBoundingBox);

Это может быть не совсем идеально, поскольку параметры прямоугольника могут быть в другом порядке или что-то в этом роде.Но когда у вас есть его, вы можете использовать carIsTouchingBumper и делать что-то.

Если вы хотите, чтобы бампер был отдельным изображением, вы можете сделать то же самое, что и выше, за исключением использования вместо него координат бампера.,Также вам придется заставить бампер следовать за машиной.

0 голосов
/ 01 декабря 2011

Попробуйте этот урок: http://create.msdn.com/en-US/education/catalog/tutorial/collision_2d_perpixel

Исходный код учебника находится в разделе «Загрузки» под двумя (безобразными) синими полями.

...