Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 1.0/2.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 22.12.2009, 20:34
Angelinka вне форума Посмотреть профиль Отправить личное сообщение для Angelinka Найти все сообщения от Angelinka
  № 1  
Ответить с цитированием
Angelinka

Регистрация: May 2009
Сообщений: 45
Attention Движение одного объекта по направлению к другому

Здравствуйте!
Ребята, подскажите пожалуйста, как мне сделать так, чтобы один объект двигался по направлению к другому с одной скоростью?
Я делаю так:
_x = _x+((ДРУГОЙ_ОБЪЕКТ._x-_x)/20);
_y = _y+((ДРУГОЙ_ОБЪЕКТ._y-_y)/20);
Это работает, но проблема в том, что движение моего объекта ко второму постепенно замедляется. Получается что он разбегается, а потом приостанавливается. В общем получается, что чем ближе мой объект к другому - тем медленнее он движется. А мне нужно чтобы объект двигался с одинаковой скоростью все время.
Будьте добры, подскажите как такое осуществить...
Заранее большое спасибо!

Старый 22.12.2009, 20:40
VVall вне форума Посмотреть профиль Отправить личное сообщение для VVall Найти все сообщения от VVall
  № 2  
Ответить с цитированием
VVall

Регистрация: Feb 2009
Сообщений: 1,195
Надо нормализовать вектор и умножить его на требуемую скорость движения.

Старый 22.12.2009, 21:09
udaaff вне форума Посмотреть профиль Отправить личное сообщение для udaaff Найти все сообщения от udaaff
  № 3  
Ответить с цитированием
udaaff
...

модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
Код AS1/AS2:
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;
}

Старый 22.12.2009, 21:16
VVall вне форума Посмотреть профиль Отправить личное сообщение для VVall Найти все сообщения от VVall
  № 4  
Ответить с цитированием
VVall

Регистрация: Feb 2009
Сообщений: 1,195
atan2, sin и cos здесь лишние. Достаточно поделить dx и dy на l (собственно нормализация вектора) и умножить на скорость.

Старый 22.12.2009, 21:25
udaaff вне форума Посмотреть профиль Отправить личное сообщение для udaaff Найти все сообщения от udaaff
  № 5  
Ответить с цитированием
udaaff
...

модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
Лишние, если убрать вращение.

Старый 22.12.2009, 23:15
Angelinka вне форума Посмотреть профиль Отправить личное сообщение для Angelinka Найти все сообщения от Angelinka
  № 6  
Ответить с цитированием
Angelinka

Регистрация: May 2009
Сообщений: 45
Спасибо, но есть проблемка.
1. Когда объект достигает своей цели - он начинает хаотично дергаться.
2. Я не понимаю, зачем мы определяем переменную l если мы ее не используем даже..
Спасибо.

Старый 22.12.2009, 23:56
udaaff вне форума Посмотреть профиль Отправить личное сообщение для udaaff Найти все сообщения от udaaff
  № 7  
Ответить с цитированием
udaaff
...

модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
1. Оставливайте объект, чтобы не дергался.
2. Ну уберите ее )

Старый 23.12.2009, 00:11
Angelinka вне форума Посмотреть профиль Отправить личное сообщение для Angelinka Найти все сообщения от Angelinka
  № 8  
Ответить с цитированием
Angelinka

Регистрация: May 2009
Сообщений: 45
Ну понятно в целом. Больше Вам спасибо!

Создать новую тему Ответ Часовой пояс GMT +4, время: 16:19.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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