
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[216.73.216.67] |
![]() |
|
Сообщ.
#1
,
|
|
|
У меня один объект движется по сцене, и натыкается на другой, причем их положение друг относительно друга неизвестно. Нужно добиться эффекта плавного "обплывания" движущегося объекта вокруг неподвижного... Если до завтра я этого не сделаю, то крыша у меня съедет окончательно. Заранее спасибо.
|
Сообщ.
#2
,
|
|
|
А что известно-то тогда, если нету данных о взаимном расположении в данный момент?
|
Сообщ.
#3
,
|
|
|
В данный момент известно. Если вы знакомы с Flash, то могу описать подробнее. Один мувик плывет по сцене, у него на пути может возникнуть другой. Так вот нужно чтобы первый обплыл второй, не касаясь его. Координаты в текущий момент времени известны, координаты неподвижного объекта тоже. Вот такие дела.
![]() |
Сообщ.
#4
,
|
|
|
Подплываем на максимально близкое расстояние, затем прикидываем окружность вокруг обплываемого мувика необходимого радиуса в центре мувика и плывем по окружности до тех пор, пока не вернемся на начальный y (игрек). Тогда плывем дальше. Вычислить координату y для окружности с известной формулой - просто. Имхо так. Правда это не шибко плавно - будет маленький изломик, когда перейдет на окружность.
|
Сообщ.
#5
,
|
|
|
а можно и по параболе... :-)
|
Сообщ.
#6
,
|
|
|
у тебя мувик движется программно или motion?
тебе еще нужно придумать с какой стороны обходить не подвижный мувик, вернее, по часовой или против Если motion, то не понятно куда и как бедет двигаться мувик после изменения _x и _y в текущем кадре. Вообще измеряй расстояние между мувиками, при загрузке очередного фрейма движущегося мувика и пересчитывай координаты примерно так: ![]() ![]() <br>onLoadFrame() // привязываешь к движущемуся мувику<br>{<br>r = Math.sqrt((_x - x_st)^2 + (_y - y_st)^2);<br>// Дальше, если расстояние меньше некоторого, то изменяй _x, _y<br>// чтоб потом вернуться на траекторию, нужно запоминать сумарное смещение<br>// если необходимо плавно, то dr постепенно увеличиваем с приближением<br>if(r < r_min) {_x += dr; _y += dr; sum += dr; dr++;}<br>// если расстояние больше некоторого и суммарное смещение от траектории <br>// не равно нулю, то возвращаемся на траекторию<br>if(r > r_min)<br> if(sum != 0) {_x -= dr; _y -= dr; sum -= dr; dr--;}<br>}<br> r - расстояние между мувиками x_st, y_st - координаты неподвижного мувика r_min - минимальное расстояние при котором начинает изменяться траектория sum - сумарное смещение от траектории dr - приращение координат sum нужно сбрасывать в ноль перед каждым столкновением dr задаешь (1 или -1) в зависимости от направления движения (возможно его придется заменить на dx и dy соответственно) |