Дергание камеры во время столкновения с стеной

SFML и C++ Уроки \ Разработка игр Форумы SFML Graphics Дергание камеры во время столкновения с стеной

В этой теме 7 ответов, 4 участника, последнее обновление Alex Alex 5 мес., 1 неделя назад.

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

    saxartom
    Участник
    Сообщений:22

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

    Репутация:4

    Всем доброго времени суток.

    Есть проблема в том, что при столкновении спрайта персонажа со спрайтом стены персонаж и камера начинает дёргаться.

    Почему так, ясно: камера прикреплена к координатам игрока, а при столкновении со стеной игрока отталкивает от нее, оттуда и такой ефект.

    Но как исправить такую ситуацию? Надо ли привязывать камеру не к координатам персонажа, а к чему то другому, или перемещать камеру за персонажем не пиксель в пиксель, а с некой “задержкой”.

    Если надо привести какой-либо код – говорите))

    Заранее спасибо)

    #3974
    +1
    Heisenberg
    Heisenberg
    Участник
    Сообщений:314

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

    Репутация:139

    Как вариант сделать плавное следование камеры за персонажем, чем персонаж дальше от центра камеры, тем быстрее она следует.

    #3981

    saxartom
    Участник
    Сообщений:22

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

    Репутация:4

    Спасибо, попробую.

    #3984
    Alex
    Alex
    Участник
    Сообщений:41

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

    Репутация:19

    еще можно заменить выталкивание объекта от стены,просто остановкой возле стены,я решил проблему именно так,тогда где остановится объект,остановится и камера,кстати в самом коде урока манипулируя величинами можно добиться подобного эффекта

    #4006

    saxartom
    Участник
    Сообщений:22

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

    Репутация:4

    Под остановкой возле стены, вы имеете ввиду обнуление переменных-ускорений по осям?

    Почему-то обнуление не работает, в том смысле, что персонаж не останавливается. Я проверял – сами переменные обнуляются а персонаж двигается. Пробовал размещать вызов апдейта для стен, и до, и после апдейт для героя, разницы нет.

    Не подскажете в чем может быть причина?

    #4007
    +1
    LastikPro
    LastikPro
    Участник
    Сообщений:93

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

    Репутация:57

    Решить ету проблему легко просто добавить код который не даст камере выходить за пределы карты. Пример  :

    vievpos позиция камеры, pos позиция игрока. То есть если игрок подходит к краю карты позиция камеры фиксируеться.

    #4010
    Alex
    Alex
    Участник
    Сообщений:41

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

    Репутация:19

    нет все намного проще,я заменил код из урока, берешь координаты объекта и при столкновении пишешь if(Dx>0){x= x-1;} и так далее,цифру подгоняшь по надобности игры ,так работает проще и надежнее,особенно в изометрической карте где параметры по другому сходятся

    #4011
    Alex
    Alex
    Участник
    Сообщений:41

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

    Репутация:19

    то есть получается функция x += dx*time; прибавляет,а if(Dx>0){x= x-1;} отнимает ,соответственно если подобрать нужное число то можно добиться что x будет неизменно и персонаж просто остановится

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

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