![]() |
Движение одного объекта по направлению к другому
Здравствуйте!
Ребята, подскажите пожалуйста, как мне сделать так, чтобы один объект двигался по направлению к другому с одной скоростью? Я делаю так: _x = _x+((ДРУГОЙ_ОБЪЕКТ._x-_x)/20); _y = _y+((ДРУГОЙ_ОБЪЕКТ._y-_y)/20); Это работает, но проблема в том, что движение моего объекта ко второму постепенно замедляется. Получается что он разбегается, а потом приостанавливается. В общем получается, что чем ближе мой объект к другому - тем медленнее он движется. А мне нужно чтобы объект двигался с одинаковой скоростью все время. Будьте добры, подскажите как такое осуществить... Заранее большое спасибо! |
Надо нормализовать вектор и умножить его на требуемую скорость движения.
|
Код AS1/AS2:
|
atan2, sin и cos здесь лишние. Достаточно поделить dx и dy на l (собственно нормализация вектора) и умножить на скорость.
|
Лишние, если убрать вращение.
|
Спасибо, но есть проблемка.
1. Когда объект достигает своей цели - он начинает хаотично дергаться. 2. Я не понимаю, зачем мы определяем переменную l если мы ее не используем даже.. Спасибо. |
1. Оставливайте объект, чтобы не дергался.
2. Ну уберите ее ) |
Ну понятно в целом. Больше Вам спасибо!
|
| Часовой пояс GMT +4, время: 19:52. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.