Как добавить обнаружение столкновений в автомобильную 2D-игру в XNA?

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


person Brunaldo    schedule 30.11.2011    source источник


Ответы (2)


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

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

person Community    schedule 01.12.2011

Кажется, было бы намного проще, если бы автомобили всегда стояли прямо, а не повернуты. Если бы они были повернуты, вы не смогли бы использовать прямоугольники, чтобы помочь. Если вы это сделаете, то вместо этого вы можете включить бампер в 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 и делать что-то еще.

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

person user1319644    schedule 21.06.2013