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);
    }

ta da 我们有一个旋转的物体。

于 2013-01-03T10:32:12.453 回答