AS3 从角色中心位置向光标发射子弹

AS3 shooting bullets to cursor from centre of character position

我正在制作一款自上而下的射击游戏。我的角色动起来了。接下来我要做的就是从角色中心向光标所在的方向发射子弹。我将如何去做这件事? 我真的很难想到完成这项工作所需的代码。

这将涉及简单的矢量数学。 There are tons of resources online about this. 这是基本要点:

1) 首先,计算您的角色与目标(在本例中为鼠标位置)之间的角度(以弧度为单位)。您可以使用 Math.atan2() 来执行此计算。

var angle:Number = Math.atan2(mouseY - playerY, mouseX - playerX);

2) 接下来,使用该角度创建一个向量 (x,y delta),它表示子弹的行进方向。您使用 Math.cos() and Math.sin() 计算 xy 值:

var speed:Number = 5;
var vector:Point = new Point(Math.cos(angle) * speed, Math.sin(angle) * speed);

3) 现在您可以通过该向量更新每帧的子弹位置:

bullet.x += vector.x;
bullet.y += vector.y;

4) 如果你想让你的子弹精灵指向行进方向,将该角度转换为度数并设置子弹精灵的 rotation:

var degrees:Number = angle * (180 / Math.PI);
bullet.rotation = degrees;

请注意,出于此处的数学目的,0 度被认为是沿 x 轴朝右,而不是像您自然认为的 0 度那样朝上(至少我是这样)。 这意味着你的精灵未旋转的方向应该面向右。