Обнаружение столкновения не работает - PullRequest
1 голос
/ 10 марта 2012

Я сделал обнаружение столкновений в секции Update (), и это код:

            if (player.playerRect.Intersects(turtleRect))
        {
            turtleRect.X = turtleRect.X - 60;
        }

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

turtleRect.X = turtleRect.X - 60;

на

turtleRect.X = turtleRect.X - 600;

, потому что я думал, что не заметил изменения.Тем не менее, ничего не произошло.Тогда я подумал, что это просто

turtleRect.X = turtleRect.X - 600

Поэтому я поместил это в метод Update () вне оператора if, и это сработало.Теперь я понимаю, что это

                if (player.playerRect.Intersects(turtleRect))
        {

        }

Но я не могу понять, что с этим не так.У меня есть playerRect в другом классе, но я импортировал его в основной класс.Я знаю, что прямоугольники движутся из-за

            turtleRect.X -= 1;

в методе Update ().Черепаха движется по экрану.Я проверил много вещей, посмотрел и до сих пор не могу понять.Это столкновение с прямоугольником, так может ли кто-нибудь подсказать мне, как сделать столкновение на пиксель?Любая помощь приветствуется.

Ответы [ 2 ]

0 голосов
/ 10 марта 2012

Я решил это, я просто добавил:

playerRect = new Rectangle((int)player.position.X, (int)player.position.Y, player.playerRect.Width, player.playerRect.Height);

Спасибо за помощь!

0 голосов
/ 10 марта 2012

Нам действительно нужно больше информации, чем это, может быть, вы не обновляете координаты после столкновения или миллион других вещей.Использовали ли вы отладчик, чтобы пройти через приложение, чтобы определить, что происходит после столкновения?Во-вторых:

if (playerRect.Intersects(turtleRect))
{
   turtleRect.X = turtleRect.X - 60;
}

Это не разрешение столкновений, оно будет иметь только частично успешный эффект, если столкновение происходит слева по оси X, и вам нужно рассмотреть что-то более устойчивое.Стартовый комплект XNA для платформера имеет довольно полное обнаружение столкновений, и это может быть хорошим началом.

...