![]() |
|
||||||||||
|
|||||
|
Регистрация: Dec 2010
Сообщений: 3
|
Добрый день.
Столкнулся с проблемой определения .rotation объекта (в моём случае это шар) после столкновения с другими объектами (стены, потолки, прочее). С изменением положения (х, у) всё понятно, а вот с углом поворота - нет; крутил, вертел, подбирал условия - ничего не выходит. Если я плохо объяснил, то вот картинка: ![]() Может быть, кто-то уже сталкивался с этой проблемой или знает, как её решить. Буду благодарен за ответы, наводки :) |
|
|||||
|
|
|
|||||
|
блогер
Регистрация: Oct 2005
Адрес: Днепродзержинск - город Брежнева и других логопедов
Сообщений: 1,421
Записей в блоге: 4
|
При идеально упругом ударе шарик не крутится вообще. Можете сделать вращение по часовой стрелке (при соударении как на рис.) после удара, если не нравится, что не крутится.
__________________
Бобры отвечают на вопросы не потому, что знают на них ответы; они отвечают потому, что их спрашивают. |
|
|||||
|
Регистрация: Dec 2010
Сообщений: 3
|
Цитата:
В общем, меня немного сбила с толку вариация угла во флеш от 0 до -180 и от 180 до 0. if (hero.x + heroRadius > right) { hero.x = right - heroRadius; hero.rotation = 180 - hero.rotation; } else if (hero.x - heroRadius < left) { hero.x = left + heroRadius; hero.rotation = 180 - hero.rotation; } else if (hero.y - heroRadius < top) { hero.y = top + heroRadius; hero.rotation *= -1; } else if (hero.y + heroRadius > bottom) { hero.y = bottom - heroRadius; hero.rotation *= -1; } Звучит просто, но я не понял. Можно как-то с алгоритмом? Возможно и другие вопросы отпадут. Последний раз редактировалось ehluu; 06.12.2010 в 09:48. |
|
|||||
|
Кодом не помогу, так как нет времени сейчас писать его. Но помогу словесно: Вам дали подсказку, даже ссылку дали. Простейшая физика-математика. 0 градусов, как правило, это когда клип смотрит вправо. Ну вот и смотрим, зная угол текущего поворота, насколько он должен отскочить - угол падения равен углу отражения. Если поворот объекта от [-180, 0], то вычитаем текущий угол из угла поворота. Если [0, 180] - прибавляем. Возможно я ошибся со знаками, вам это нужно проверить.
__________________
тут я |
|
|||||
|
блогер
Регистрация: Oct 2005
Адрес: Днепродзержинск - город Брежнева и других логопедов
Сообщений: 1,421
Записей в блоге: 4
|
Не, ну если вы не псих, то вы знаете направление его движения) Ну скорость там, например, Vx, Vy.
Считаете же как-то после столкновений и пр. Тогда угол поворота hero.rotation = Math.atan2(Vy, Vx) * 180 / Math.PI + add; add - угол в градусах между осью х и тем местом, которым он будет смотреть по направлению движения.
__________________
Бобры отвечают на вопросы не потому, что знают на них ответы; они отвечают потому, что их спрашивают. |
![]() |
![]() |
Часовой пояс GMT +4, время: 19:22. |
|
|
« Предыдущая тема | Следующая тема » |
|
|