AS3将对象移向x,y然后继续朝同一方向(使用tweener)

时间:2013-06-18 09:21:13

标签: actionscript-3 angle tweener

我正在构建一个简单的太空射击游戏

使用Tweener类我编写了一个代码,用于从英雄飞船当前位置向鼠标当前位置发射子弹

var fire = new Bullet();
        addChild(fire);
        fire.x = ship.x + (ship.width * 0.5);
        fire.y = ship.y
        Tweener.addTween(fire, {x:_me.currentTarget.mouseX, y:_me.currentTarget.mouseY, time: 5} );

问题是这段代码使子弹停在最后一个鼠标位置 我希望子弹继续朝同一方向移动,直到它在舞台之外。

从理论上讲,最简单的方法是输入鼠标的x.y位置,就好像它处于同一角度但在舞台之外 但我怎样才能得到那些x,y坐标?

2 个答案:

答案 0 :(得分:1)

确定子弹的角度。 使用角度,考虑子弹的原点是圆心,第一个点作为圆边的坐标。

子弹遵循相同的路径,它只是一个更大的圆,所以半径会增加。

角度将相同,原点也是如此。

答案 1 :(得分:0)

我认为你想要的是找到一个与(fire.x,fire.y),(_ me.currentTarget.mouseX,_me.currentTarget.mouseY)相同的直线点。点的x将是舞台宽度。

因此假设目标点是A(stage.width,targetY)

我们得到了

(targetY - mouseY)/(targetX - mouseX)=(mouseY - fire.y)/(mouseX - fire.x)

所以

targetY = (mouseY - fire.y)/(mouseX - fire.x)*(targetX - mouseX) + mouseY;

Hero mouseX是_me.currentTarget.mouseX,mouseY是_me.currentTarget.mouseY

您可以设置targetX = stage.width + 10,然后设置targetY

所以你可以获得targetY,并做另一个补间

Tweener.addTween(fire,{x:targetX,y:targetY,time:5});