как убрать зависимость анимации от движения мыши на экране

SFML и C++ Уроки \ Разработка игр Форумы SFML Graphics как убрать зависимость анимации от движения мыши на экране

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

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

    Zanpakutou
    Участник
    Сообщений:1

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

    Репутация:0

    не понимаю, что не так сделала
    пока мышкой по окну вожу, анимация происходит…как только перестаю..анимация замирает

    и еще если enemy.update писать внутри цикла while (window.pollEvent(event)) анимация сильно тормозит
    а если вне его, то быстро происходит

    Вложения:
    You must be logged in to view attached files.
    #1281

    Zanpakutou
    Участник
    Сообщений:1

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

    Репутация:0

    у меня в игре вообще нет персонажа
    это будет что-то вроде тира
    что я делаю не так?(

    #1284
    Павел Букреев
    Павел Букреев
    Хранитель
    Сообщений:582

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

    Репутация:106

    Попробуй enemydrag.update(time); и все что ниже (похожие строки внизу теснятся) – выпилить из этого цикла пул эвент. т.е занести за скобку } но оставить в цикле “пока открыто окно”

    #1529

    tkir
    Участник
    Сообщений:3

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

    Репутация:3

    Была та же проблема, решение – вынести из цикла event.
    Вместо event.type == Event::MouseButtonPressed
    за циклом используй Mouse::isButtonPressed(Mouse::Left)

    #1550

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

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

    Репутация:10

    если не использовать if((event.type == sf::Event::MouseButtonPressed) && ( Mouse::isButtonPressed(Mouse::Left)))? в только Mouse::isButtonPressed(Mouse::Left), то нажатие будет сквозное, не важно какое окно будет в таргете. ( Для примера можно закрыть область нажатия консолью и кликнуть по консоли).

    Что за процессор? Скок ядер? Не используя режима “Sleep” вы загружаете одно ядро до предела возможностей( относительно загруженности от других приложений), что возможно и является причиной подтормаживания.(как решение использовать лимит кадров в секунду) Плюс происходит отслеживание всех событий ( движения, нажатия и тд.) Можно глянуть в справку для SFML :
    ” bool sf::Window::pollEvent ( Event & event )
    Pop the event on top of the event queue, if any, and return it. … ”
    А это не так мало времени и переменная time может оказаться не корректной вне цикла пула.
    Не знаю почему предложено было использовать time для синхронизации, но так выходит обогреватель.

    А перестает работать анимация при отсутствии движений мыши , потому что нету никаких событий. window.pollEvent(event) = false !!!!
    Все что не использует event надо выносить в основной цикл.

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

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