![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: May 2009
Сообщений: 45
|
Здравствуйте!
Ребята, подскажите пожалуйста, как мне сделать так, чтобы один объект двигался по направлению к другому с одной скоростью? Я делаю так: _x = _x+((ДРУГОЙ_ОБЪЕКТ._x-_x)/20); _y = _y+((ДРУГОЙ_ОБЪЕКТ._y-_y)/20); Это работает, но проблема в том, что движение моего объекта ко второму постепенно замедляется. Получается что он разбегается, а потом приостанавливается. В общем получается, что чем ближе мой объект к другому - тем медленнее он движется. А мне нужно чтобы объект двигался с одинаковой скоростью все время. Будьте добры, подскажите как такое осуществить... Заранее большое спасибо! |
|
|||||
|
Регистрация: Feb 2009
Сообщений: 1,195
|
Надо нормализовать вектор и умножить его на требуемую скорость движения.
|
|
|||||
|
...
модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
|
onEnterFrame = onEnterFrameHandler; var v:Number = 5; function onEnterFrameHandler():Void { var dx:Number = _xmouse - mc._x; var dy:Number = _ymouse - mc._y; var l:Number = Math.sqrt(dx * dx + dy * dy); var rad:Number = Math.atan2(dy, dx); mc._x += v * Math.cos(rad) mc._y += v * Math.sin(rad); mc._rotation = 180 * rad / Math.PI; } |
|
|||||
|
Регистрация: Feb 2009
Сообщений: 1,195
|
atan2, sin и cos здесь лишние. Достаточно поделить dx и dy на l (собственно нормализация вектора) и умножить на скорость.
|
|
|||||
|
...
модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
|
Лишние, если убрать вращение.
|
|
|||||
|
Регистрация: May 2009
Сообщений: 45
|
Спасибо, но есть проблемка.
1. Когда объект достигает своей цели - он начинает хаотично дергаться. 2. Я не понимаю, зачем мы определяем переменную l если мы ее не используем даже.. Спасибо. |
|
|||||
|
...
модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
|
1. Оставливайте объект, чтобы не дергался.
2. Ну уберите ее ) |
|
|||||
|
Регистрация: May 2009
Сообщений: 45
|
Ну понятно в целом. Больше Вам спасибо!
|
![]() |
![]() |
Часовой пояс GMT +4, время: 09:00. |
|
|
« Предыдущая тема | Следующая тема » |
|
|