Показать сообщение отдельно
Старый 08.09.2010, 14:40
Jewelz вне форума Посмотреть профиль Отправить личное сообщение для Jewelz Найти все сообщения от Jewelz
  № 2  
Ответить с цитированием
Jewelz
 
Аватар для Jewelz

Регистрация: Aug 2008
Адрес: Рязань
Сообщений: 723
думаю тут проблема в том, что условие
Код AS3:
if((evt.target.x * evt.target.x) + (evt.target.y * evt.target.y) > radius * radius)
выполняется несколько раз подряд

вобще наверное немного неверный подход использован,

во первых, рыбка не плавает вот так:


но это скорее всего обычная недоработка, суть в алгоритме:

рыбка не плавает от края к краю, значит нам нужно просто узнать следующее положение рыбки и двигать ее туда:

мы имеем круглый аквариум, и знаем текущее положение рыбки, довольно просто вычислить следующее положение - например так: нужно взять случайный угол между 0 и 360 град. и от центра аквариума взять случайное расстояние по этому направлению, но не меньше какого-то значения.. скажем r/4, и не больше r (r-радиус аквариума)



далее я бы просто использовал бы Tweener и двигал рыбку с неким easeInOutSine до этой точки, после достижения ее, выбираем следущую точку, да и еще нужно исключить точки выше зеленой линии, так как там воды нет



p.s. вобще надо посмотреть видео реальных аквариумов, как там плавают рыбки, то есть врятли у них все время одинаковая скорость, + угол подъема наверно не больше 30-40 градусов (в нормальных условиях), + они имеют свойство просто "стоять" на месте, вобщем алгоритм на самом деле не такой простой если нужно добиться хоть какого-то реализма
__________________
low +