以 45 度角射击子弹



我正在尝试以 45 度角射击子弹。然而,它一直在直射。

float armCos = (float)Math.Cos(0.0f - MathHelper.PiOver2);
float armSin = (float)Math.Sin(0.0f - MathHelper.PiOver2);
bullet.position = new Vector2(
                        arm.position.X + 42 * armCos,
                        arm.position.Y + 42 * armSin);

您可以使用此返回 vector 的函数。使用是在你的 init 子弹函数上,并存储到某个变量中,并使用它来更新你的子弹位置。

public static Vector2 Vector2FromAngle(double angle, bool normalize = true)
{
    Vector2 vector = new Vector2((float)Math.Cos(angle), (float)Math.Sin(angle));
    if (vector != Vector2.Zero && normalize)
        vector.Normalize();
    return vector;
}

最新更新