![]() |
|
||||||||||
|
|||||
|
Регистрация: Aug 2008
Сообщений: 6
|
Подскажите пожалуйста как задать клипу движение в случайную точку.
Зранее спасибо! |
|
|||||
|
Ну допустим есть у тебя точка(случайная, ага) с координатами nx и ny. И есть текущие координаты _x и _y. Чтобы двигаться в точку nx; ny тебе нужно найти вектор движения в ту точку
Потом найдем длину вектора - Далее После этого в onEnterFrame объекта пишем Где Speed - это наша скорость. Мог в чем-то ошибиться, так как писал сразу в форуме.
__________________
while(1) {} |
|
|||||
|
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Division, не первый раз вижу эту штуку с квадратным корнем, но теперь вроде поймал автора))
Вот Вы мне объясните, ради чего Вам знать длину гипотенузы? Вы будете смещать клип не по Х и У, а сразу на столько-то пикселей по диагонали? http://flasher.ru/forum/showthread.php?t=112351
__________________
Reality.getBounds(this); Последний раз редактировалось Wolsh; 06.08.2008 в 23:14. |
|
|||||
|
Длина гипотенузы(точнее длина вектора), нужна чтобы найти нормализованный вектор направления в нужную точку. Если этот нормализованный вектор умножить на скорость(Speed) и прибавить к нашим координатам, объект переместится ровно на Speed пикселей. Не понимаю что конкретно Вам не нравится (:
__________________
while(1) {} Последний раз редактировалось Division; 06.08.2008 в 23:37. |
|
|||||
|
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Цитата:
__________________
Reality.getBounds(this); |
|
|||||
|
Блин, я не могу Вас понять (: Интересно, а как вы узнаете, на какое расстояние нужно смещаться по x и по y? Может покажите небольшой примерчик? Где объект с заданной скоростью будет двигаться в точку n.
PS 30 раз в секунду посчитать корень это не страшно. К тому же всегда остается простор для оптимизации.
__________________
while(1) {} |
|
|||||
|
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Это с постоянной скоростью
var dx = (nx-_mc._x)/speed;
var dy = (ny-_mc._y)/speed;
_mc.onEnterFrame = function(){
this._x += dx
this._y += dy
}
__________________
Reality.getBounds(this); |
|
|||||
|
Ладно, с замедлением до нуля трогать не буду, но первый пример мне почему-то не нравится (:
То есть фактически скорость движения будет зависить от начального расстояние между точками. То есть условие "с заданной скоростью" вы не выполнили (: Да и скорость(speed) на самом деле не скорость, а число кадров, за которое объект доберется от начальной точки до конечной (: То есть если бы я делал игру, например, я бы хотел чтобы мой speed был реально скоростью, количеством пикселей, которое пройду за один кадр. Ваш вариант меня бы не устроил (:
__________________
while(1) {} |
|
|||||
|
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
))) Дружище, я бы мог развернуть дискуссию на тему сколько клеток от одного угла тетрадного листа до другого, что собственно и есть пиксели) Но в общем-то Вы правы, я сделал не с заданной скоростью, а с постоянной.
А теперь вопрос - если у нас 30 кадров в секунду и мы достигаем точки за 10 кадров, то....?
__________________
Reality.getBounds(this); Последний раз редактировалось Wolsh; 07.08.2008 в 00:39. |
|
|||||
|
Ну я надеюсь Вы теперь не будете так вот к квадратным корням придираться? (:
UPD: Цитата:
SqSpeed = Speed*Speed; Потом при движении смотрим, если квадрат расстояния между точками (x2-x1)^2+(y2-y1)^2 меньше квадрата скорости SqSpeed, значит мы дошли до точки. На самом деле мы можем её немного "перепрыгнуть", так что можно смело ставить наши текущие координаты в точку N
__________________
while(1) {} Последний раз редактировалось Division; 07.08.2008 в 00:50. |
![]() |
![]() |
Часовой пояс GMT +4, время: 17:23. |
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | |
| Опции просмотра | |
|
|