Да, я делаю двухмерную гоночную игру. До сих пор я двигал машину и т. Д. (Конечно, с небольшой помощью), и мне было интересно, как мне добавить обнаружение столкновений в XNA. Я взял часть бампера (от всего трека) и сделал отдельным файлом в формате .png. И я думал о том, чтобы добавить вокруг него поле обнаружения столкновений (так что, если «машина» ударит «бампер», отодвиньтесь назад так-то и так-то). Как добавить обнаружение столкновения в бампер и интегрировать его с автомобилем? Спасибо!
Как добавить обнаружение столкновений в автомобильную 2D-игру в XNA?
Ответы (2)
Попробуйте это руководство: http://create.msdn.com/en-US/education/catalog/tutorial/collision_2d_perpixel
Исходный код учебника находится в разделе «Загрузки» под двумя (уродливыми) синими прямоугольниками.
Кажется, было бы намного проще, если бы автомобили всегда стояли прямо, а не повернуты. Если бы они были повернуты, вы не смогли бы использовать прямоугольники, чтобы помочь. Если вы это сделаете, то вместо этого вы можете включить бампер в 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
и делать что-то еще.
Если вы хотите, чтобы бампер был отдельным изображением, вы можете сделать то же самое, что и выше, за исключением того, что вместо этого используйте координаты бампера. Также вам нужно будет сделать так, чтобы бампер следовал за машиной.