Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Объект с траекторией полета огибающей предметы (http://www.flasher.ru/forum/showthread.php?t=94487)

RedDiamond 13.04.2007 02:31

Объект с траекторией полета огибающей предметы
 
Почему-то когда создал тему http://flasher.ru/forum/showthread.php?t=94454 модератор ее закрыл из-за несоответствия названия вопросу, сейчас я думаю соответствует.
Повторю вопрос:
Нужно сделать такую фишку: Есть объект(точка) Летит слева на право. Мышкой перемещаем предмет и ставим на пути этой точки. Точка должна облететь этот предмет с наибольшей реалистичностью(как пузыри воздуха в воде обходят камни и т.п.)
Как можно сделать? Голову ломаю второй месяц:wacko:
Было предложение сделать так:
Цитата:

Препятствие которое передвигаешь нужно сделать побольше т.е. под ним в мувике нарисовать прозрачный квадрат(по форме) побольше.
В коде рассказываешь, что когда хиттестит, то, типа, облетай!
Для меня и есть главная проблема как в коде "рассказываешь, что когда хиттестит, то, типа, облетай!" Я можно сказать только начинаю изучать серьезно AS и поэтому не силен. Подскажите как реализовать! Всем заранее огромное спасибо!!!

iNils 13.04.2007 02:37

Цитата:

Сообщение от RedDiamond
Почему-то когда создал тему http://flasher.ru/forum/showthread.php?t=94454 модератор ее закрыл из-за несоответствия названия вопросу

Потому-то, это нарушение правил было.

Mr. Fixit 13.04.2007 02:45

тебе полностью вряд ли кто-то поможет решать такую проблему.
Сам знаю, так что дерзай. Поверь так лучше. :)

RedDiamond 13.04.2007 03:21

Цитата:

Сообщение от Mr. Fixit
тебе полностью вряд ли кто-то поможет решать такую проблему.
Сам знаю, так что дерзай. Поверь так лучше. :)

Может у кого-то пример есть чего-то похожего. Может кто-то подскажет как написать функцию движения?

iNils 13.04.2007 03:25

Цитата:

Сообщение от RedDiamond
Может у кого-то пример есть чего-то похожего. Может кто-то подскажет как написать функцию движения?

Слева направо?
Код:

var speed:Number = 5;
this.onEnterFrame = function () {
        имя_объекта._x += speed;
}


screamge 13.04.2007 06:43

Цитата:

Мышкой перемещаем предмет и ставим на пути этой точки.
Код:


this.имя_объекта.onPress = function() {
    this.startDrag();
};


CorC 13.04.2007 10:14

Цитата:

В коде рассказываешь, что когда хиттестит, то, типа, облетай!
Вы знаете, что совершенных алгоритмов решения данной проблемы не существует, а что если у вас фигура - какой-нибудь невыпуклый предмет?
Предлагаю упростить и делать по прямоугольной форме:
1. летит предмет (П1), как летит писал iNils.
2. тащим предмет (П2), как тащим тоже написано.
3. проверем на hitTest П1 П2, как лучше в хелп или поиск
4. потом, пока hitTest идем вверх или вниз
5. как только не hitTest продоолжаем движение прямо

Kikasso 13.04.2007 11:25

Если надо "(как пузыри воздуха в воде обходят камни и т.п.)", рекомендую нарисовать траектории движения обтекания камня пузырьками. На бумаге.
Потом отсканировать и/или прорисовать траектории.
Потом каждую линию сделать Motion Guide для клипа - шарика. Шарик не забыть назвать. Все должно быть в библиотеке, указать linkage id.
Далее, пузырек подплывает к камешку, по формуле iNils'а и в какой-то момент приближается настолько, что пора бы начинать обтекать. Тут вы сохраняете текущие координаты пузырька,
Код:

bubble._x0=bubble._x;
bubble._y0=bubble._y;

про _x+=5 забываете, аттачите нужный клип куда-нибудь вне поля зрения, и каждый кадр сумируете координаты того шарика, что на траектории, с сохраненным положением пузырька.
Код:

var depth = getNextHighestDepth();
var treck_mc = attachMovie( "trek1", "treck"+ depth, depth );
var lider:MovieClip = treck_mc.ball;
bubble.onEnterFrame = function(){
this._x = this._x0 + lider._x;
this._y = this._y0 + lider._y;
}

Потом надо будет грохнуть пузырь вместе с траекторией. Как программно исполнить обтекание предмета струей, не спрашивайте. Этим занимаются большие институты, и то они все проверяют в бассейнах. Траектория слишком перегружена переменными.

aksios 13.04.2007 11:36

Можно пачитать насчет алгоритмов расчета координат. Можна даже задать траекторию движения уравнением, в котором по мере необходимости менять кое какие координаты.
В принципе, у объекта и точки есть координаты, и они доступны. Придумываем условие, типа если разность координат х меньше чего та, надо изменить у точки в зависимости от текущего у предмета. Тогда если предмет не на пути точки, пролетаем с минимальным отклонением, на пути, огибаем сверху или снизу - в зависимости от координат центра предмета. Если координата х точки больше х предмета, то надо возвратиться на прежнюю траекторию. Делаем все то же что при приближении, тока наоборот. Форма фигуры не имеет зачения, нас интересует тока положение ее центра, ну и задаем на каком расстоянии точка должна облететь фигуру.
ЗЫ: Насчет реалистичности: реалистично всегда значит реально за деньги.

RedDiamond 13.04.2007 13:08

Всем спасибо за советы! Буду пробовать! Если что-то будет не получаться, обязательно спрашу

Жень Шень 13.04.2007 16:33

Вложений: 2
Привет!
На форуме есть всё! Или почти всё. Вот два исходника - практически реализующие поставленную задачу.


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

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