我正在构建一个简单的太空射击游戏
使用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坐标?答案 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});