Касание игрока с врагом, помогите

SFML и C++ Уроки \ Разработка игр Форумы SFML Graphics Касание игрока с врагом, помогите

Помечено: 

В этой теме 5 ответов, 2 участника, последнее обновление  KindRedSand 2 нед., 1 день назад.

Просмотр 6 сообщений - с 1 по 6 (из 6 всего)
  • Автор
    Сообщения
  • #4582
    +1

    spoty76
    Участник
    Сообщений:11

    Зарегистрирован:
    23.03.2017

    Репутация:2

    Вообщем ничего не понимаю, я перепроверял всю программу, пробовал разные альтернативы, ничего не помогло, вообщем в 23 уроке сделал команды:

    Проблема в том, что при старте игры (игрок спавнится достаточно далеко от врага, ну я говорю про p.sprite;) у меня получается начинает все время срабатывать эти команды, игрок сразу умирает и в выведение здоровья очень быстро отнимаются жизни по 25 (p.health -= 25;), я перепроверил карту, враги расположены правильно, соответствуют своим координатам вот весь мой код:

    На всякий случай уточню, игрок не пересекается с врагом, все начинается сразу при запуске, и враги исчезают с карты, если же я уберу команду пересечения (for it entities… if *it->getRect.intersects) то все будет работать нормально, в чем проблема?

    #4583
    +1

    KindRedSand
    Участник
    Сообщений:31

    Зарегистрирован:
    05.04.2017

    Репутация:15

    Вобще – учитесь с самого начала пользоватся дебагом, гораздо упрощает жизнь в отлове ошибок. Понаставляйте отметок останова в циклах и через шаг с обходом смотрите на каком моменте игрок теряет хп даже не пересекаясь.
    И не проще вместо
    sprite.setPosition(x+w/2,y+h/2);
    использовать единожды в конструкторе
    sprite.setOrigin(w/2,h/2);
    и дальше спокойно использовать sprite.setPosition(x,y);

    #4584

    spoty76
    Участник
    Сообщений:11

    Зарегистрирован:
    23.03.2017

    Репутация:2

    Расскажите, как пользоваться дебагом, потому что в интернете есть только вопроссы про компиляцию в проекте в режиме релиз и дебаг, что за отметки мне стоит выставлять? Я пока не очень понимаю

    #4585

    KindRedSand
    Участник
    Сообщений:31

    Зарегистрирован:
    05.04.2017

    Репутация:15

    Точки дебаг останова активируются нажатием ЛКМ в столбце напротив строки где нужно вызвать ‘паузу’ приложения.
    Студия в момент дебаг остнова. Думаю не нужно обьяснять что делает кнопка продолжить. Убрать точку останова можно так же как и поставили – ЛКМ по ней.

    #4627

    spoty76
    Участник
    Сообщений:11

    Зарегистрирован:
    23.03.2017

    Репутация:2

    Господи, это такой треш, короче я с того момента так ничего и не придумал, спрашивал на английских форумах, там все предлагали перепроверить либы, один вообще говорил, что у меня итератор удаляется слишком рано, вообщем я отчаялся, но вдруг пересматривая уже в последний раз код я заметил это, у меня было написано if (p.getRect().intersects((*iter1)->getRect()));

    что-то подозрительная точка с запятой, ОНА МЕШАЛА ПРОВЕРКИ ПЕРЕСЕЧЕНИЯ и в итоге все команды снизу начинали выполняться обходя, жесть полная, столько было теорий, даже какие-то совсем непонятные вещи мне говорили

    #4628

    KindRedSand
    Участник
    Сообщений:31

    Зарегистрирован:
    05.04.2017

    Репутация:15

    Человеческий фактор никогда не отменялся. Странно что IntelliSense не маячит об этом…

Просмотр 6 сообщений - с 1 по 6 (из 6 всего)

Для ответа в этой теме необходимо авторизоваться.