ActionScript 3简单的弹丸路径

时间:2013-12-20 02:17:26

标签: actionscript-3

晚上好(写作时)

我在这个主题上所做的研究已经发现了许多有关各种类似于我的情况的富有成效的代码块,但并不完全相同。如果有一个我没有发现的,我会很感激一个链接!

我有一些相关的标准,都在二维飞机上,问题与二维弹丸路径有关:

1)对象A:位置ax,ay

2)对象B:位置bx,

3)物体P :(射弹)原点位置bx,

物体P以静态速度离开物体B的X / Y位置,朝向物体A的X / Y位置移动。

物体A和B继续沿着它们的路径移动,而不管物体P的轨迹如何。对象P继续从ax,ay移动到bx,以及之后。我想我只需要角度和速度,并且不需要继续追踪超过那个(只需相应地增加运动步骤直到离开阶段,物体被放置在那里)。

我正在使用Actionscript 3,任何帮助将不胜感激。谢谢!

1 个答案:

答案 0 :(得分:0)

在大多数情况下,在2D x-y平面中,通常比极坐标(角度+距离)更容易处理平面(x轴和y轴分离)方式的运动和动量。我无法得到你想要的抛射物的确切行为,所以我假设你想要一个简单的,火箭式的火箭式抛射物(保持初始方向)。

:: 1.抛射物发射(射弹的“射击”)

var duration:int //(duration of flight(until getting to (ax,ay) described in number of frames)
var spdX:Number //(x-axis part of speed, described in pixels per frame)
var spdY:Number //(y-axis part of speed, described in pixels per frame)

spdX=(bx-ax)/duration;
spdY=(by-ay)/duration;

:: 2.抛射物移动(听取ENTER_FRAME事件,每帧执行一次)

projectile.x+=spdX;
projectile.y+=spdY;

::如果你想改变射弹的速度,简单的乘法将会处理它。

public function adjustSpeed(ratio:Number):void
{
    spdX*=ratio;
    spdY*=ratio;
}