Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 05.12.2010, 21:51
ehluu вне форума Посмотреть профиль Отправить личное сообщение для ehluu Найти все сообщения от ehluu
  № 1  
Ответить с цитированием
ehluu

Регистрация: Dec 2010
Сообщений: 3
По умолчанию .rotation после столкновения.

Добрый день.
Столкнулся с проблемой определения .rotation объекта (в моём случае это шар) после столкновения с другими объектами (стены, потолки, прочее). С изменением положения (х, у) всё понятно, а вот с углом поворота - нет; крутил, вертел, подбирал условия - ничего не выходит.

Если я плохо объяснил, то вот картинка:



Может быть, кто-то уже сталкивался с этой проблемой или знает, как её решить. Буду благодарен за ответы, наводки :)

Старый 05.12.2010, 22:05
drnet_ua вне форума Посмотреть профиль Отправить личное сообщение для drnet_ua Найти все сообщения от drnet_ua
  № 2  
Ответить с цитированием
drnet_ua
 
Аватар для drnet_ua

Регистрация: Jul 2010
Адрес: 50° 27′ 0″ N, 30° 30′ 0″ E
Сообщений: 256
Записей в блоге: 2
а в чем проблемма?

Старый 05.12.2010, 22:05
КорДум вне форума Посмотреть профиль Отправить личное сообщение для КорДум Найти все сообщения от КорДум
  № 3  
Ответить с цитированием
КорДум
 
Аватар для КорДум

блогер
Регистрация: Jan 2008
Адрес: syktyvkar
Сообщений: 3,803
Записей в блоге: 10
Дык это, угол падения равен углу отражения.
__________________
тут я

Старый 05.12.2010, 22:06
drnet_ua вне форума Посмотреть профиль Отправить личное сообщение для drnet_ua Найти все сообщения от drnet_ua
  № 4  
Ответить с цитированием
drnet_ua
 
Аватар для drnet_ua

Регистрация: Jul 2010
Адрес: 50° 27′ 0″ N, 30° 30′ 0″ E
Сообщений: 256
Записей в блоге: 2
http://ru.wikipedia.org/wiki/%D0%9E%...D0%BA%D0%B0%29

Старый 05.12.2010, 22:07
samana вне форума Посмотреть профиль Отправить личное сообщение для samana Найти все сообщения от samana
  № 5  
Ответить с цитированием
samana
 
Аватар для samana

блогер
Регистрация: Mar 2008
Адрес: Днепропетровск
Сообщений: 1,783
Записей в блоге: 3
Так вроде про вращение объекта спрашивают, а не про угол отскока.

Старый 05.12.2010, 22:08
КорДум вне форума Посмотреть профиль Отправить личное сообщение для КорДум Найти все сообщения от КорДум
  № 6  
Ответить с цитированием
КорДум
 
Аватар для КорДум

блогер
Регистрация: Jan 2008
Адрес: syktyvkar
Сообщений: 3,803
Записей в блоге: 10
Знаете угол отскока, прибавляете к текущему повороту - все.
__________________
тут я

Старый 05.12.2010, 22:50
-De- вне форума Посмотреть профиль Отправить личное сообщение для -De- Найти все сообщения от -De-
  № 7  
Ответить с цитированием
-De-
 
Аватар для -De-

блогер
Регистрация: Oct 2005
Адрес: Днепродзержинск - город Брежнева и других логопедов
Сообщений: 1,421
Записей в блоге: 4
Отправить сообщение для -De- с помощью ICQ Отправить сообщение для -De- с помощью Skype™
При идеально упругом ударе шарик не крутится вообще. Можете сделать вращение по часовой стрелке (при соударении как на рис.) после удара, если не нравится, что не крутится.
__________________
Бобры отвечают на вопросы не потому, что знают на них ответы; они отвечают потому, что их спрашивают.

Старый 06.12.2010, 09:45
ehluu вне форума Посмотреть профиль Отправить личное сообщение для ehluu Найти все сообщения от ehluu
  № 8  
Ответить с цитированием
ehluu

Регистрация: Dec 2010
Сообщений: 3
Цитата:
Сообщение от -De- Посмотреть сообщение
При идеально упругом ударе шарик не крутится вообще. Можете сделать вращение по часовой стрелке (при соударении как на рис.) после удара, если не нравится, что не крутится.
Крутиться не должен, конечно, но игровая механика требует, чтобы объект смотрел в сторону своего движения.

В общем, меня немного сбила с толку вариация угла во флеш от 0 до -180 и от 180 до 0.
Код AS3:
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.
Старый 06.12.2010, 10:11
КорДум вне форума Посмотреть профиль Отправить личное сообщение для КорДум Найти все сообщения от КорДум
  № 9  
Ответить с цитированием
КорДум
 
Аватар для КорДум

блогер
Регистрация: Jan 2008
Адрес: syktyvkar
Сообщений: 3,803
Записей в блоге: 10
Кодом не помогу, так как нет времени сейчас писать его. Но помогу словесно: Вам дали подсказку, даже ссылку дали. Простейшая физика-математика. 0 градусов, как правило, это когда клип смотрит вправо. Ну вот и смотрим, зная угол текущего поворота, насколько он должен отскочить - угол падения равен углу отражения. Если поворот объекта от [-180, 0], то вычитаем текущий угол из угла поворота. Если [0, 180] - прибавляем. Возможно я ошибся со знаками, вам это нужно проверить.
__________________
тут я

Старый 06.12.2010, 11:25
-De- вне форума Посмотреть профиль Отправить личное сообщение для -De- Найти все сообщения от -De-
  № 10  
Ответить с цитированием
-De-
 
Аватар для -De-

блогер
Регистрация: Oct 2005
Адрес: Днепродзержинск - город Брежнева и других логопедов
Сообщений: 1,421
Записей в блоге: 4
Отправить сообщение для -De- с помощью ICQ Отправить сообщение для -De- с помощью Skype™
Не, ну если вы не псих, то вы знаете направление его движения) Ну скорость там, например, Vx, Vy.
Считаете же как-то после столкновений и пр. Тогда угол поворота
hero.rotation = Math.atan2(Vy, Vx) * 180 / Math.PI + add;
add - угол в градусах между осью х и тем местом, которым он будет смотреть по направлению движения.
__________________
Бобры отвечают на вопросы не потому, что знают на них ответы; они отвечают потому, что их спрашивают.

Создать новую тему Ответ Часовой пояс GMT +4, время: 20:37.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 20:37.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.