1

弾丸を 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);
4

1 に答える 1

1

ベクトルを返すこの関数を使用できます。使用はあなたの初期弾丸関数であり、いくつかの変数に保存し、それを使用して弾丸の位置を更新します。

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;
}
于 2013-11-04T09:35:48.460 に答える