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

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

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

Регистрация: Feb 2007
Сообщений: 20
По умолчанию Обхождение препятствий(да да да, опять столкновения)

Есть круг который бегает за мышкой, т.е. ты на него нажимаешь и начинаешь отводить в сторону мышку, а кружок начинает за ней бежать, и чем больше расстояние тем быстрее он бежит к мышке.

Есть столы(прямоугольники), и когда кружок бежит, то он не должен проходит сквозь столы, он должен в них врезаться.

Но в тоже время кружок, врезавшись в стол(и упираясь в него), должен продолжать свое движение к мышке, скользя вдоль стола, пока не выйдет опять на прямую, чтобы побежать к мышке по прямой.

Столов штук 10-15.

Я реализовал с помощью hitTest'а отталкивание кружка от стола, но это не красиво, т.к. кружок отталкнувшись от стола на следущий кадр побежит опять к мышке и опять ударится об стол, и будет так биться пока пользователь не выведет мышку из-за стола.

Как сделать плавный обход столов?

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

Регистрация: May 2003
Адрес: Tallinn
Сообщений: 3,182
надели его интеллектом =) алгоритм обхождения стен и нахождение кратчайшего пути в случае хиттеста...в нэте есть примеры...поищи
__________________
Flash Developer
Папа TDP4 Team Battle

Старый 05.06.2007, 01:57
Xex вне форума Посмотреть профиль Отправить личное сообщение для Xex Найти все сообщения от Xex
  № 3  
Ответить с цитированием
Xex

Регистрация: Feb 2007
Сообщений: 20
=) кружок не сам двигается, его пользователь двигает, так что "алгоритм обхождения стен и нахождение кратчайшего пути" не совсем то что нужно.

У меня появилась идея: как только создается квадрат, к нему еще создаются 4 отрезка, которые его ограничивают. Дальше кружок математикой(а не покадрово hitTest'ом) тестируется на столкновения с этими отрезками, и если есть столкновение то передвижение по X(если отрезок вертикальный) или по Y(если отрезок горизонтальный) приравнивается к нулю, таким образом кружок будет скользить, обходя стол.

Но у меня остается вопрос по поводу того как это сделать не покадрово. У меня в клипе движение кружка просчитывается onEnterFrame, и при большой скорости может быть два положения: предположим за 5 пикселей до стола, а на следущий кадр на 10 пикселей в столе) как сделать правильно, что бы математика все решала не покадрово, а в голове?)

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

Регистрация: Mar 2001
Сообщений: 1,147
ну почему вы всегда ищете самый геморройный вариант решения проблемы? сделай у своего кружка 2 невидимых усика, и хиттести их кончики на предмет столкновения со столами. если стукнулся левым усиком, обходи препятствие справа и наоборот. у тебя же препятствия - выпуклые многоугольники. не надо тут никакой математики и алгоритмов нахождения кратчайшего пути. зачем чужие процессоры своими неоптимальными вычислениями мучить? единственное, что если раньше у тебя кружок мог боком за мышью бежать и этого никто не замечал, теперь тебе его усами к мышке надо будет направлять всё время. но это несложно, тут найдёшь кучу примеров. ну и ограничь макс скорость кружка половиной длинны усика (ну или длину усика на корень из двух подели). дай юзеру насладиться умом и сообразительностью твоего колобка.
__________________
Кто говорит, тот не знает. Кто знает, тот не говорит.

Старый 05.06.2007, 15:34
Xex вне форума Посмотреть профиль Отправить личное сообщение для Xex Найти все сообщения от Xex
  № 5  
Ответить с цитированием
Xex

Регистрация: Feb 2007
Сообщений: 20
=) неплохо, только вот в чем дело: представь себе NFS, представил? так вот когда машина сталкивается с домом, она не обходит его САМА, она скользит вдоль стенки, пока пользователь давит на газ и не разворачивает ее в другую сторону, она скользит вдоль стенки, не обходит, не проходит сквозь дом, не разворачивается сама, ОНА СКОЛЬЗИТ. Мне нужен тот же эффект.

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

Регистрация: May 2003
Адрес: Tallinn
Сообщений: 3,182
используй вектора...материала куча
__________________
Flash Developer
Папа TDP4 Team Battle

Старый 05.06.2007, 23:43
Xex вне форума Посмотреть профиль Отправить личное сообщение для Xex Найти все сообщения от Xex
  № 7  
Ответить с цитированием
Xex

Регистрация: Feb 2007
Сообщений: 20
не очень понимаю как векторы с этим связаны, можно поподробнее плз? заранее спасибо)

Старый 06.06.2007, 00:52
D12 вне форума Посмотреть профиль Отправить личное сообщение для D12 Найти все сообщения от D12
  № 8  
Ответить с цитированием
D12
меценат
 
Аватар для D12

блогер
Регистрация: Jan 2004
Адрес: D
Сообщений: 1,592
Записей в блоге: 2
Double правильно говорит =) я называю этот эффект аурой, то что вам нужно определяется математически по возможному вектору пути который меняется в реальном времени но так неделли даже при создании квейка =)
это изврат, делай иллюзию в игре а не захламляй ее, если обьект имеет большую скорость и при покадровке может проскачить препятствие которое имеет меньшее числовое значение чем скорость то в случае проскока через препятствие по условию позиционируй обьект перед препятствием, а то что он проскачил то этого ты незаметишь, и все будет нормально
__________________
Безвыходных положений небывает © Барон Мюнхаузен=)Исходники

Старый 06.06.2007, 01:42
ToXICus вне форума Посмотреть профиль Отправить личное сообщение для ToXICus Посетить домашнюю страницу ToXICus Найти все сообщения от ToXICus
  № 9  
Ответить с цитированием
ToXICus
 
Аватар для ToXICus

Регистрация: May 2006
Адрес: налево от Лондона
Сообщений: 447
Отправить сообщение для ToXICus с помощью ICQ
Я согласен с double, но как же быть, если объект контролируеться только пользователем.
Видал решение с применением гетБаундс(), где при матиматической коллизии объекта с границей набрасывался 1 пиксель, который не давал "застрять" объекту.
Попробуй http://board.flashkit.com/board/show...4&page=3&pp=20 для ознакомления.
__________________
Чтоб понять, что ничего не знаешь - учись.

Старый 06.06.2007, 03:20
Xex вне форума Посмотреть профиль Отправить личное сообщение для Xex Найти все сообщения от Xex
  № 10  
Ответить с цитированием
Xex

Регистрация: Feb 2007
Сообщений: 20
D12, да, я знаю про такой метод, но тут немного не тот случай. Кружок не только должен позиционироваться перед квадратным столом, но и продолжать двигаться по касательной.

ToXICus, по ссылке не разобрался, хоть и знаю английский. Может быть попробую завтра еще раз)

В своих поисках наткнулся на http://noregret.org/tutor/n/collision/#3
очень интересно, только там теория и никакой конкретики, я не очень разобрался(наверное из-за того что сейчас 2 ночи).

Выкладываю вам swf и fla, с криво-недореализованным алгоритмом. Кружок скользит вдоль стола, но иногда застревает, тормозит, вкатывается и т.п. Выкладываю, чтобы просто показать как это примерно должно быть, а потом, Господа, с радостью выслушаю ваши предложения.

Хммм...не разрешает сдесь выложить, прийдется так http://slil.ru/24472659
sry..

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

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

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


 


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


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