![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|
|
|||||
|
Всем привет.
Возникла задача реализовать движение ракеты к точке, которая тоже движется. Ракета не может резко менять направление движения, она движется по инерции. Подскажите алгоритм просчета траектории. Без инерции и прочей физики все просто. Высчитываем расстояние к точке и вектор движения и с определенной скоростью меняем координаты ракеты. А как сюда добавить физику? Спасибо
__________________
Идущий осилит дорогу! |
|
|||||
|
Регистрация: Oct 2006
Сообщений: 2,283
|
на каждом шаге добавляй к вектору скорости ракеты вектор, направленный к точке движения умноженный на коэффициент, пропорциональный массе ракеты
|
|
|||||
|
Я реализовал вот так: к текущему вектору движения прибавляю предыдущий, умноженный на определенный коэффициент. Выходит достаточно реалистично.
__________________
Идущий осилит дорогу! |
|
|||||
|
Регистрация: Oct 2006
Сообщений: 2,283
|
это прямолинейное равноускоренное движение.Где тут следование за целью?
|
|
|||||
|
Цитата:
Добавлено через 48 секунд Если это не правильно, тогда подскажи, что такое вектор скорости и вектор, направленный к точке движения.
__________________
Идущий осилит дорогу! |
|
|||||
|
Регистрация: Oct 2006
Сообщений: 2,283
|
типа того:
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; } Для большей реалистичности можно добавить трение |
|
|||||
|
Регистрация: Oct 2006
Сообщений: 2,283
|
v - вектор скорости
delta - вектор, направленный в сторону цели. |
|
|||||
|
В примере ракета толком не долетает до мышки, особенно, если мышку двигать.
Но я уже реализовал задачу. У мене есть вектор скорости, есть вектор движения к цели. Я складываю вектора. Вектор скорости зависит от массы ракеты. После просчетов результирующий вектор становится вектором скорости. В результате ракета летит очень хорошо, когда подбираются правильные параметры скорости и веса.
__________________
Идущий осилит дорогу! |
![]() |
![]() |
Часовой пояс GMT +4, время: 17:57. |
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | |
| Опции просмотра | |
|
|