![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: Feb 2007
Сообщений: 20
|
Есть круг который бегает за мышкой, т.е. ты на него нажимаешь и начинаешь отводить в сторону мышку, а кружок начинает за ней бежать, и чем больше расстояние тем быстрее он бежит к мышке.
Есть столы(прямоугольники), и когда кружок бежит, то он не должен проходит сквозь столы, он должен в них врезаться. Но в тоже время кружок, врезавшись в стол(и упираясь в него), должен продолжать свое движение к мышке, скользя вдоль стола, пока не выйдет опять на прямую, чтобы побежать к мышке по прямой. Столов штук 10-15. Я реализовал с помощью hitTest'а отталкивание кружка от стола, но это не красиво, т.к. кружок отталкнувшись от стола на следущий кадр побежит опять к мышке и опять ударится об стол, и будет так биться пока пользователь не выведет мышку из-за стола. Как сделать плавный обход столов? |
|
|||||
|
Регистрация: May 2003
Адрес: Tallinn
Сообщений: 3,182
|
надели его интеллектом =) алгоритм обхождения стен и нахождение кратчайшего пути в случае хиттеста...в нэте есть примеры...поищи
|
|
|||||
|
Регистрация: Feb 2007
Сообщений: 20
|
=) кружок не сам двигается, его пользователь двигает, так что "алгоритм обхождения стен и нахождение кратчайшего пути" не совсем то что нужно.
У меня появилась идея: как только создается квадрат, к нему еще создаются 4 отрезка, которые его ограничивают. Дальше кружок математикой(а не покадрово hitTest'ом) тестируется на столкновения с этими отрезками, и если есть столкновение то передвижение по X(если отрезок вертикальный) или по Y(если отрезок горизонтальный) приравнивается к нулю, таким образом кружок будет скользить, обходя стол. Но у меня остается вопрос по поводу того как это сделать не покадрово. У меня в клипе движение кружка просчитывается onEnterFrame, и при большой скорости может быть два положения: предположим за 5 пикселей до стола, а на следущий кадр на 10 пикселей в столе) как сделать правильно, что бы математика все решала не покадрово, а в голове?) |
|
|||||
|
Регистрация: Mar 2001
Сообщений: 1,147
|
ну почему вы всегда ищете самый геморройный вариант решения проблемы? сделай у своего кружка 2 невидимых усика, и хиттести их кончики на предмет столкновения со столами. если стукнулся левым усиком, обходи препятствие справа и наоборот. у тебя же препятствия - выпуклые многоугольники. не надо тут никакой математики и алгоритмов нахождения кратчайшего пути. зачем чужие процессоры своими неоптимальными вычислениями мучить? единственное, что если раньше у тебя кружок мог боком за мышью бежать и этого никто не замечал, теперь тебе его усами к мышке надо будет направлять всё время. но это несложно, тут найдёшь кучу примеров. ну и ограничь макс скорость кружка половиной длинны усика (ну или длину усика на корень из двух подели). дай юзеру насладиться умом и сообразительностью твоего колобка.
__________________
Кто говорит, тот не знает. Кто знает, тот не говорит. |
|
|||||
|
Регистрация: Feb 2007
Сообщений: 20
|
=) неплохо, только вот в чем дело: представь себе NFS, представил? так вот когда машина сталкивается с домом, она не обходит его САМА, она скользит вдоль стенки, пока пользователь давит на газ и не разворачивает ее в другую сторону, она скользит вдоль стенки, не обходит, не проходит сквозь дом, не разворачивается сама, ОНА СКОЛЬЗИТ. Мне нужен тот же эффект.
|
|
|||||
|
Регистрация: May 2003
Адрес: Tallinn
Сообщений: 3,182
|
используй вектора...материала куча
|
|
|||||
|
Регистрация: Feb 2007
Сообщений: 20
|
не очень понимаю как векторы с этим связаны, можно поподробнее плз? заранее спасибо)
|
|
|||||
|
меценат
|
Double правильно говорит =) я называю этот эффект аурой, то что вам нужно определяется математически по возможному вектору пути который меняется в реальном времени но так неделли даже при создании квейка =)
это изврат, делай иллюзию в игре а не захламляй ее, если обьект имеет большую скорость и при покадровке может проскачить препятствие которое имеет меньшее числовое значение чем скорость то в случае проскока через препятствие по условию позиционируй обьект перед препятствием, а то что он проскачил то этого ты незаметишь, и все будет нормально
__________________
Безвыходных положений небывает © Барон Мюнхаузен=)Исходники |
|
|||||
|
Я согласен с double, но как же быть, если объект контролируеться только пользователем.
Видал решение с применением гетБаундс(), где при матиматической коллизии объекта с границей набрасывался 1 пиксель, который не давал "застрять" объекту. Попробуй http://board.flashkit.com/board/show...4&page=3&pp=20 для ознакомления.
__________________
Чтоб понять, что ничего не знаешь - учись. |
|
|||||
|
Регистрация: Feb 2007
Сообщений: 20
|
D12, да, я знаю про такой метод, но тут немного не тот случай. Кружок не только должен позиционироваться перед квадратным столом, но и продолжать двигаться по касательной.
ToXICus, по ссылке не разобрался, хоть и знаю английский. Может быть попробую завтра еще раз) В своих поисках наткнулся на http://noregret.org/tutor/n/collision/#3 очень интересно, только там теория и никакой конкретики, я не очень разобрался(наверное из-за того что сейчас 2 ночи). Выкладываю вам swf и fla, с криво-недореализованным алгоритмом. Кружок скользит вдоль стола, но иногда застревает, тормозит, вкатывается и т.п. Выкладываю, чтобы просто показать как это примерно должно быть, а потом, Господа, с радостью выслушаю ваши предложения. Хммм...не разрешает сдесь выложить, прийдется так http://slil.ru/24472659 sry.. |
![]() |
![]() |
Часовой пояс GMT +4, время: 22:19. |
|
|
« Предыдущая тема | Следующая тема » |
|
|