![]() |
|
||||||||||
|
|
|
|||||
|
Регистрация: Mar 2011
Адрес: Ibiza
Сообщений: 13
|
есть шарик с instance name - mc
при клике мышки он летит в сторону курсора и должен остановиться в точке, где был произведен клик.. при клике он летит и постепенно останавливается, но останавливается не совсем в нужной точке, а пролетает немного дальше или не долетает.. var X:Number = mouseX; var Y:Number = mouseY; //Скорость шарика var mc_speedXTO:Number; var mc_speedYTO:Number; //Скорость движения шара var speed:Number = 10; //Добавляем ENTER_FRAME , что анимирует движение шара stage.addEventListener(MouseEvent.MOUSE_DOWN, mouse); stage.addEventListener(Event.ENTER_FRAME, moveBall); function mouse(e:Event):void { //Вычисляем расстояния по x и y от шара до точки var distance_posX:Number = mouseX - mc.x; var distance_posY:Number = mouseY - mc.y; //Вычисляем расстояние от точки до шара var dist_pos = Math.sqrt(distance_posX * distance_posX + distance_posY * distance_posY); //Вычисляем угол между шаром и мышью var angle:Number = Math.atan2(distance_posY,distance_posX); var distance_mouseX:Number = mouseX - mc.x; var distance_mouseY:Number = mouseY - mc.y; //Вычисляем расстояние от шара до мышки var dist_mouse = Math.sqrt(distance_mouseX * distance_mouseX + distance_mouseY * distance_mouseY); mc_speedXTO = Math.cos(angle) * speed * 4; mc_speedYTO = Math.sin(angle) * speed * 4; mc.x += mc_speedXTO; mc.y += mc_speedYTO; if (dist_mouse > 0) { var mc_angle = Math.atan2(distance_mouseY,distance_mouseX); mc_speedXTO = Math.cos(mc_angle) * speed * 4; mc_speedYTO = Math.sin(mc_angle) * speed * 4; } } function moveBall(e:Event):void { mc.x += mc_speedXTO; mc.y += mc_speedYTO; //Уменьшаем скорость mc_speedXTO *= 0.9; mc_speedYTO *= 0.9; } Последний раз редактировалось Gonsalez; 28.04.2011 в 13:56. |
|
|||||
|
Регистрация: Nov 2010
Сообщений: 497
|
Скорость шарика и замедление фиксированы. Шарик суммарно пролетает примерно 440 точек по прямой. Нужно характеристики движения (скорость, замедление и т.п.) вычислять исходя из координат. Кстати, зачем вы угол то считаете?
Сумму (суммароное перемещение) вроде бы правильно посчитал. Код не компилировал, возможны опечатки. |
|
|||||
|
Юзайте твинеры и будет вам счастье.
__________________
9 из 10 голосов в моей голове сказали наркотикам "НЕТ" Мои ачивки: художник-паразит. |
|
|||||
|
Banned
Регистрация: Jan 2010
Адрес: РФ. Кемеровская область
Сообщений: 3,243
|
Можно использовать, что-то типа этого:
Но я бы по теореме Пифагора расчитал расстояние, которое объект должен пройти, далее покадрово расчитывал пройденный путь (по той же вхеме), и если он превысил нужное расстояние, останавливал бы, или при приближении замедлял |
![]() |
![]() |
Часовой пояс GMT +4, время: 08:11. |
|
|
« Предыдущая тема | Следующая тема » |
|
|