![]() |
программная анимация, поведение рыбок в аквариуме
Вложений: 1
Всем привет!
Мы сделали аквариум и в него запустили рыбку, заставили ее плавать. НО она сейчас немного "психованая" :wacko: потому что я не могу заставить ее правильно делать разворот и, наверное, отступ от стен аквариума. Помогите, пожалуйста, придумать, как бы заставить нашу рыбку совершать подходящий разворот, что бы она не "залипала" у стенки аквариума. Превьюшка в аттача. А вот код: Код AS3:
|
думаю тут проблема в том, что условие
Код AS3:
вобще наверное немного неверный подход использован, во первых, рыбка не плавает вот так: http://www.flasher.ru/forum/attachme...1&d=1283936913 но это скорее всего обычная недоработка, суть в алгоритме: рыбка не плавает от края к краю, значит нам нужно просто узнать следующее положение рыбки и двигать ее туда: мы имеем круглый аквариум, и знаем текущее положение рыбки, довольно просто вычислить следующее положение - например так: нужно взять случайный угол между 0 и 360 град. и от центра аквариума взять случайное расстояние по этому направлению, но не меньше какого-то значения.. скажем r/4, и не больше r (r-радиус аквариума) http://www.flasher.ru/forum/attachme...1&d=1283938341 далее я бы просто использовал бы Tweener и двигал рыбку с неким easeInOutSine до этой точки, после достижения ее, выбираем следущую точку, да и еще нужно исключить точки выше зеленой линии, так как там воды нет http://www.flasher.ru/forum/attachme...1&d=1283938544 p.s. вобще надо посмотреть видео реальных аквариумов, как там плавают рыбки, то есть врятли у них все время одинаковая скорость, + угол подъема наверно не больше 30-40 градусов (в нормальных условиях), + они имеют свойство просто "стоять" на месте, вобщем алгоритм на самом деле не такой простой если нужно добиться хоть какого-то реализма |
а есть событие, которое отслеживает завершился данный Tweener или нет?
Чтобы по этому событию генерировать новую точку внутри аквариума. |
там в параметрах есть аргумент onComplete:someFunc, someFunc - ф-я, которая вызовется после завершения анимации
http://hosted.zeh.com.br/tweener/docs/en-us/ |
если в матмоделе соударения двух шариков рандомно пробежаться и позаменять знаки + на -, и рандомно к некоторым углам добавить 90 градусов, то получается типичное поведение рыбок. красиво смотрится когда их много -- часть иногда плавает парами, часть друг за другом гоняется, некоторые иногда встречая стенку плывут вдоль нее, а встречая вблизи друг друга они подплывают близко и потом начинают один за другим гоняться.
где именно менять знаки не скажу -- там творческий процесс. %) |
Если нужно по проще, то после условия выхода за пределы аквариума нужно возвращать рыбку обратно в аквариум.
Например так: Код AS3:
|
| Часовой пояс GMT +4, время: 08:17. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.