7

私は45度の角度でキヤノンから発射されている長方形のボディを持っています。体も45度回転させて、体の前に質量を設定しました。

体は空中で上手く上がりますが、体が地球に戻るときは回転しません。質量側が先に下がる方法はありますか?

私の実例は、ひもを付けたテニスボールを空中に投げることです。現在、重力が影響を及ぼしても、ストリングはボールの後ろに落ちません。

これが私の「ボール」です

Body = BodyFactory.CreateRectangle(world, ConvertUnits.ToSimUnits(texture.Width), ConvertUnits.ToSimUnits(texture.Height),100f, postition, this);
Body.Mass = 1;
Body.LocalCenter = new Vector2(ConvertUnits.ToSimUnits(Texture.Width), ConvertUnits.ToSimUnits(Texture.Height / 2));
Body.UserData = this;
Body.BodyType = BodyType.Dynamic;
Body.CollisionCategories = Category.All;
Body.CollidesWith = Category.All;
Body.IgnoreGravity = false;
float ang = BarrelJoint.JointAngle;
Body.Rotation = ang;

それから私はそれを発射するためにこれを行います:

Body.ApplyLinearImpulse(new Vector2((float)Math.Cos(ang) * 100, (float)Math.Sin(ang) * 100));

忘れている設定や計算があると思います。

4

1 に答える 1

1

将来これを読む人のために、私はそれを解決しました.

回転を変えたいと思っていたのと同じように、速度も同じように変化することに気付きました。だから私は回転を速度に基づいており、重力が下に引っ張られるほど、オブジェクトは下向きになります。

私のオブジェクト更新クラスには、次のものを入れました (注: 計算が間違っている可能性があります)。

public override void Update(GameTime gameTime)
    {
        Vector2 velocity = Body.LinearVelocity;

        float radians = (float)(Math.Atan2(-velocity.X, velocity.Y) + Math.PI/2.0);

        Body.Rotation = radians;

        base.Update(gameTime);
    }

そして、回転するオブジェクトがあります。

于 2013-01-03T10:32:12.453 に答える