Опускать / выгружать прямоугольники в XNA 4.0 - PullRequest
0 голосов
/ 02 апреля 2012

Я создаю клон Space Invaders в XNA в качестве упражнения.За последние 5 дней я сталкивался с различными препятствиями, особенно со столкновениями, которые я обошел.Наконец-то у меня получилось, что это работает только для решения другой проблемы.

Пуля от игрока сталкивается и уничтожает захватчиков, однако прямоугольник, который я создаю как хитбокс для столкновений, остается.(Я думаю)

Здесь можно найти целое решение, чтобы вы могли воссоздать проблему, просто нажмите F5 и пробел, чтобы убить зеленых захватчиков, пустое пространство, которое осталось позади, я полагаю, является прямоугольником .: https://www.dropbox.com/sh/pzy7fx3tuprzza2/GIjhZ6V5ll

Мой вопрос: когда эта пуля попадает в захватчика, как я могу удалить прямоугольник или остановить его пересечение.

1 Ответ

0 голосов
/ 03 апреля 2012

Кажется, проблема в том, что вы не узнаете, что ваш захватчик взорван в строке 524 Game1.cs. У вас есть оператор FOR, который вращается через ваших захватчиков, выясняет, где должен быть захватчик, и затем проверяетесли хит-боксы пересекаются.Вы не проверяете, является ли тот захватчик, чей хитбокс пересекается, уже мертвым.

В вашем объекте Invaders (Invader1, Invader2 и т. Д.) Вам нужно отслеживать переменную, чтобы определить, жив ли Invarder,Похоже, вы можете использовать переменную invaderVis, если хотите, поскольку она, похоже, определяет, следует ли показывать этот захватчик.

Так что строка 524 должна быть изменена на что-то вроде

if (Type1Invaders[Count].invaderVis && rectMissile.Intersects(rectInvader))
{
    //Do logic for hit
}

Также измените вашу проверку попадания НЛО на lne 539, чтобы сделать то же самое.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...