не могу убить игрока

SFML и C++ Уроки \ Разработка игр Форумы SFML Graphics не могу убить игрока

В этой теме 8 ответов, 3 участника, последнее обновление  Serob 6 года/лет, 11 мес. назад.

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

    Serob
    Участник
    Сообщений:25

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

    Репутация:1

    Добрый день!

    Спасибо Павлу за супер уроки, все очень понятно и доходчиво.

    в общем вопрос не могу убить героя никак. герой может убить врагов прыжком а его никак. как быть помогите.

     

    #4649
    +1

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

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

    Репутация:30

    А собствено как вы его убивать собрались? Если вы хотели просто не давать камере следить за игроком то зачем тогда выстроена такая конструкция?

     

    #4651

    Serob
    Участник
    Сообщений:25

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

    Репутация:1

    чуть выше есть такое

    этого не достаточно? с монстрами срабатывает!

    игрок ходит мимо монстров и никак с ними не взаимодействует, может только “убить” прыгнув сверху.

    #4653
    +1

    tobidashi
    Участник
    Сообщений:16

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

    Репутация:7

    Моожно посмотреть на значения переменных в момент пересечения. Должно стать ясно, почему код не заходит в ветку бокового столкновения с монстром. Например, так:

    #4654

    Serob
    Участник
    Сообщений:25

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

    Репутация:1

    пробовал отслеживать как сказали, терминал показывает примерно следующее

    intersection with Monstr, p.dy: 0.049113, p.onGround: 1, p.health: -3400
    intersection with Monstr, p.dy: 0.04953, p.onGround: 1, p.health: -3450
    intersection with Monstr, p.dy: 0.069093, p.onGround: 1, p.health: -3500
    intersection with Monstr, p.dy: 0.067749, p.onGround: 1, p.health: -3550

    изначально в первой строке терминала p.health всегда отрицательное и больше 3000 (эта цифра произвольная в диапазоне от минус 3000 до минус 9000).

    #4655

    tobidashi
    Участник
    Сообщений:16

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

    Репутация:7

    Serob, теперь видно, что игрок получает урон от монстров. Если хотите, чтобы он исчезал с экрана, то нужно его добавить в список entities. Только сперва нужно подкорректировать переменную p.health. Вы говорите, что она может принимать значения от -3000 до -9000. В конструкторе класса entity есть строка if (health <= 0) { life = false; }. В функции update из класса Player у вас есть условие if (health <= 0) { life = false; }. Получается, что у игрока life всегда равна false. Лучше p.health задать равной положительному значению (например, 100), тогда после нескольких столкновений с монстром p.health станет отрицательной и p.life станет равна false. Когда вы пройдёте по списку entities, все у кого life == false, будут из него удалены и перестанут отображаться на экране.

    #4656

    Serob
    Участник
    Сообщений:25

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

    Репутация:1

    в class Entity я объявил health=N.  переменная “N” определяется в “int main” при создании игрока и монстра. у монстров  “N=1″, а у игрока “N=100″

    при изменении переменной N  у монстра, жизнь монстра меняется, а вот жизнь игрока никак не работает.

    сейчас писал это и до меня дошло Player у меня не в закидывается entilist он отдельно от него, но как тогда взаимодействует с монстрами? и почему p.health  начинается с отрицательного числа?

     

     

    #4657

    tobidashi
    Участник
    Сообщений:16

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

    Репутация:7

    Игрок взаимодействует с монстрами благодаря условию

    в котором проверяется пересечение его прямоугольника с объектами списка entlist, то есть монстрами.

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

    #4658

    Serob
    Участник
    Сообщений:25

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

    Репутация:1

    tobidashi

    cпасибо за помощь! разобрался у меня игрок умирал, только в классе управления игроком забыл дописать if (life) { тут код управления игроком} поэтому я мог игроком управлять.

    в общем метод кота работает :)

    еще раз большое спасибо за помощь!

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

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