我正在制作一款自上而下的射击游戏。我让我的角色动起来了。接下来我要做的就是从角色的中心向光标所在的方向发射子弹。我将如何做到这一点?我真的很难想到完成这项工作所需的代码。
这将涉及简单的向量数学。网上有大量关于此的资源。以下是基本要点:
1)首先,计算角色和目标(在本例中为鼠标位置)之间的角度(以弧度为单位)。您可以使用Math.atan2()
来执行此计算。
var angle:Number = Math.atan2(mouseY - playerY, mouseX - playerX);
2)接下来,使用该角度创建一个矢量(x,y delta),该矢量表示子弹的行进方向。您可以使用 Math.cos()
和 Math.sin()
来计算x
和y
值:
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 度那样朝上(至少我是这样)。这意味着您的精灵未旋转的方向应该朝右。