我正在做一个自上而下的射击游戏。我的角色动人了。我接下来要做的就是从我的角色中心向我的光标方向射击子弹。我该怎么做呢? 我真的很难想到我需要使用的代码。
答案 0 :(得分:1)
这将涉及简单的矢量数学。 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()
和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度(至少我这样)。 这意味着你的精灵未旋转的方向应该面向右边。