вращение изображения спрайта в SDL

Я делаю 2D-игру, используя С++ SDL 2.0.

У меня все настроено. У меня есть разные классы для моего Sprite, которые используют SDL_QueryTexture для загрузки всех моих текстур спрайтов. У меня есть основной класс игрока, который использует класс спрайтов для рисования. У меня есть еще один основной класс, который запускает мой игровой цикл и цикл рисования, который снова ссылается как на моего игрока, так и на спрайт.

Так что у меня все работает нормально до сих пор. Я могу перемещать своего игрока по щелчку мыши на экране. Теперь то, что я хочу сделать, это, по сути, повернуть мой плеер в направлении его движения. Итак, если направление игрока слева, я хочу повернуть спрайт игрока на 90 градусов влево и так далее для других направлений. Для текстур sdl нет свойства поворота, поэтому я немного застрял на этом этапе.

Проблема: можно ли это реализовать только с помощью углов sin и cos?

Я пытался это сделать, но это не работает. Любая помощь здесь будет оценена по достоинству.


person Htlcs    schedule 12.06.2014    source источник
comment
wiki.libsdl.org/SDL_RenderCopyEx   -  person Benjamin Lindley    schedule 12.06.2014
comment
stackoverflow.com/ вопросы/1183900/   -  person G--    schedule 12.06.2014


Ответы (1)


Как Бенджамин указал в своем комментарии, сигнатура метода, который вы используете для рендеринга спрайтов

int SDL_RenderCopyEx(SDL_Renderer*          renderer,
                 SDL_Texture*           texture,
                 const SDL_Rect*        srcrect,
                 const SDL_Rect*        dstrect,
                 const double           angle,
                 const SDL_Point*       center,
                 const SDL_RendererFlip flip)

предоставляет вам два параметра: один для установки точки поворота, а другой для установки углов поворота. Обратите внимание, что точка поворота принимает (0,0) спрайта в качестве ссылки.

person roymcclure    schedule 15.10.2014