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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 13.05.2016, 23:12
Charly84 вне форума Посмотреть профиль Отправить личное сообщение для Charly84 Посетить домашнюю страницу Charly84 Найти все сообщения от Charly84
  № 1  
Ответить с цитированием
Charly84
 
Аватар для Charly84

Регистрация: Aug 2004
Адрес: Украина, Киев, Белая Церковь
Сообщений: 204
Отправить сообщение для Charly84 с помощью ICQ
По умолчанию Движение ракеты к точке, которая тоже движется

Всем привет.

Возникла задача реализовать движение ракеты к точке, которая тоже движется.
Ракета не может резко менять направление движения, она движется по инерции.

Подскажите алгоритм просчета траектории.


Без инерции и прочей физики все просто. Высчитываем расстояние к точке и вектор движения и с определенной скоростью меняем координаты ракеты. А как сюда добавить физику?


Спасибо
__________________
Идущий осилит дорогу!

Старый 13.05.2016, 23:25
undefined вне форума Посмотреть профиль Отправить личное сообщение для undefined Найти все сообщения от undefined
  № 2  
Ответить с цитированием
undefined

Регистрация: Oct 2006
Сообщений: 2,283
на каждом шаге добавляй к вектору скорости ракеты вектор, направленный к точке движения умноженный на коэффициент, пропорциональный массе ракеты

Старый 14.05.2016, 00:43
Charly84 вне форума Посмотреть профиль Отправить личное сообщение для Charly84 Посетить домашнюю страницу Charly84 Найти все сообщения от Charly84
  № 3  
Ответить с цитированием
Charly84
 
Аватар для Charly84

Регистрация: Aug 2004
Адрес: Украина, Киев, Белая Церковь
Сообщений: 204
Отправить сообщение для Charly84 с помощью ICQ
Цитата:
Сообщение от undefined Посмотреть сообщение
на каждом шаге добавляй к вектору скорости ракеты вектор, направленный к точке движения умноженный на коэффициент, пропорциональный массе ракеты
Я реализовал вот так: к текущему вектору движения прибавляю предыдущий, умноженный на определенный коэффициент. Выходит достаточно реалистично.
__________________
Идущий осилит дорогу!

Старый 14.05.2016, 00:52
undefined вне форума Посмотреть профиль Отправить личное сообщение для undefined Найти все сообщения от undefined
  № 4  
Ответить с цитированием
undefined

Регистрация: Oct 2006
Сообщений: 2,283
это прямолинейное равноускоренное движение.Где тут следование за целью?

Старый 14.05.2016, 01:51
Charly84 вне форума Посмотреть профиль Отправить личное сообщение для Charly84 Посетить домашнюю страницу Charly84 Найти все сообщения от Charly84
  № 5  
Ответить с цитированием
Charly84
 
Аватар для Charly84

Регистрация: Aug 2004
Адрес: Украина, Киев, Белая Церковь
Сообщений: 204
Отправить сообщение для Charly84 с помощью ICQ
Цитата:
Сообщение от undefined Посмотреть сообщение
это прямолинейное равноускоренное движение.Где тут следование за целью?
Ну так каждый фрейм высчитывается новое направление к цели. И получается, что при попытке сменить курс, ракета получает инерцию от предыдущего направления полета.

Добавлено через 48 секунд
Если это не правильно, тогда подскажи, что такое вектор скорости и вектор, направленный к точке движения.
__________________
Идущий осилит дорогу!

Старый 14.05.2016, 02:48
undefined вне форума Посмотреть профиль Отправить личное сообщение для undefined Найти все сообщения от undefined
  № 6  
Ответить с цитированием
undefined

Регистрация: Oct 2006
Сообщений: 2,283
типа того:
Код AS3:
import flash.display.*;
import flash.events.*;
import flash.geom.*;
stage.scaleMode=StageScaleMode.NO_SCALE;
var pos:Point=new Point(stage.stageWidth*0.5,stage.stageHeight*0.5);
var v:Point=new Point(0,0);
var m:Number=0.001;
rocket_mc.x=pos.x;
rocket_mc.y=pos.y;
addEventListener(Event.ENTER_FRAME,onEF);
function onEF(e:Event):void {
	var delta:Point=new Point(this.mouseX-pos.x,this.mouseY-pos.y);
	v.x+=delta.x*m;
	v.y+=delta.y*m;
	pos.x+=v.x;
	pos.y+=v.y;
	rocket_mc.x=pos.x;
	rocket_mc.y=pos.y;
	var angle:Number=Math.atan2(pos.y-mouseY,pos.x-mouseX)*180/Math.PI;
	rocket_mc.rotation=angle+180;
}
inertion.swf   (0.9 Кб)

Для большей реалистичности можно добавить трение
Вложения
Тип файла: swf inertion.swf (912 байт, 216 просмотров)

Старый 14.05.2016, 02:52
undefined вне форума Посмотреть профиль Отправить личное сообщение для undefined Найти все сообщения от undefined
  № 7  
Ответить с цитированием
undefined

Регистрация: Oct 2006
Сообщений: 2,283
v - вектор скорости
delta - вектор, направленный в сторону цели.

Старый 15.05.2016, 00:07
Charly84 вне форума Посмотреть профиль Отправить личное сообщение для Charly84 Посетить домашнюю страницу Charly84 Найти все сообщения от Charly84
  № 8  
Ответить с цитированием
Charly84
 
Аватар для Charly84

Регистрация: Aug 2004
Адрес: Украина, Киев, Белая Церковь
Сообщений: 204
Отправить сообщение для Charly84 с помощью ICQ
В примере ракета толком не долетает до мышки, особенно, если мышку двигать.

Но я уже реализовал задачу.
У мене есть вектор скорости, есть вектор движения к цели. Я складываю вектора. Вектор скорости зависит от массы ракеты. После просчетов результирующий вектор становится вектором скорости.

В результате ракета летит очень хорошо, когда подбираются правильные параметры скорости и веса.
__________________
Идущий осилит дорогу!

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

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

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


 


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


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