|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
Регистрация: Mar 2010
Адрес: Russian Federation
Сообщений: 59
|
Почему спрайт перестает поворачиваться, если значение угла больше 32768?
Спрайт прикручен к телу в box2d. Тело вращается (колесо). Rotation спрайт получает от угла тела. Угол тела box2d не обнуляется, за каждый пройденный круг прибавляется 2П радиан. После того, как вращение тела произошло более 91 раз, угол тела становится 2П * 91 = 571.76, что в градусах 91 * 180 * П = 32760. И колесо еще сможет сделать оборот на 8 градусов. Но более этого уже не сможет. То есть колесо не сможет сделать 91-ый оборот до конца.
Обхожу это следующим (проверка в каждом кадре): Но как-то не очень красиво получается. Может есть другие способы борьбы с этой проблемой? |
|
|||||
Регистрация: Jul 2007
Сообщений: 393
|
32768, что то мне это число напоминает :-)))))))))))))))
По теме сделайте присвоение через сеттер/геттер. Т.е. если у вас полный круг превышен(360), то отнимайте 360 или кратно 360. , если кратко |
|
|||||
Регистрация: Mar 2010
Адрес: Russian Federation
Сообщений: 59
|
Спасибо! С остатком от деления действительно получается изящнее!
P.S. Может быть кто-нибудь знает корень проблемы? Почему так происходит? Почему спрайт не может поворачиваться, если значение более 32768? |
|
|||||
Регистрация: Jul 2007
Сообщений: 393
|
потому что на него отведено 2 байта, со знаком. Это max_value для SI16 = 32768
но, надеюсь, вы не в каждом кадре это проверяете, а при присвоении? |
|
|||||
Регистрация: Mar 2010
Адрес: Russian Federation
Сообщений: 59
|
В каждом кадре, так как присвоение в каждом кадре. Это плохо?
|
|
|||||
Недавно про него вспоминал, в прошлом году наткнулся. Тоже в box2d, колёса у машинки вращаться переставали. Почему так происходит не понятно. Ну. т.е. понятно что два байта, а почему именно два и почему в хелпе не написано об этом не ясно.
__________________
:) |
|
|||||
Регистрация: Jul 2007
Сообщений: 393
|
Цитата:
Добавлено через 39 секунд Нет, поскольку у вас это одно и то же, то нормально. |
|
|||||
.
|
Каким образом переполнение сетки влияет на значение?
|
|
|||||
Цитата:
__________________
:) |
Часовой пояс GMT +4, время: 16:22. |
|
« Предыдущая тема | Следующая тема » |
|
|