gpt4 book ai didi

c# - body 不会因重力而旋转而面朝下

转载 作者:太空狗 更新时间:2023-10-29 20:39:57 24 4
gpt4 key购买 nike

我有一个矩形主体,正以 45 度角从佳能发射。 body 也向上旋转 45 度角,我已将质量设置在 body 的前部。

body 很好地上升到空中,但是,当 body 回到地面时它并没有旋转。有没有办法让质量侧先下降?

我的真实世界示例是,将附有字符串的网球抛向空中。目前,当重力起作用时,弦不会落在球后面。

这是我的'球'

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

我猜我忘记了一些设置或计算。

最佳答案

对于将来阅读本文的任何人,我确实已经解决了。

我意识到速度会以与我希望旋转变化类似的方式变化。所以我根据速度进行旋转,重力向下拉得越多,物体就会变得面朝下越多。

在我的对象更新类中,我放置了以下内容(注意:数学可能不好)

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

现在我们有一个旋转的物体。

关于c# - body 不会因重力而旋转而面朝下,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14066710/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com