子弹物理学,不能与静态地面碰撞工作

时间:2015-01-15 22:48:01

标签: c# physics collision bullet

我在我的引擎中使用了子弹物理,并没有太难将它集成。我面临的问题是碰撞系统似乎无法识别我的楼板。 我创建了这样的物理系统:

var collisionConfig = new BulletSharp.DefaultCollisionConfiguration();
        PhysicsWorld = new BulletSharp.DiscreteDynamicsWorld(
            new BulletSharp.CollisionDispatcher(collisionConfig), 
            new BulletSharp.DbvtBroadphase(), 
            new BulletSharp.SequentialImpulseConstraintSolver(), 
            collisionConfig);

现在我添加了具有立方碰撞网格的刚体(由子弹提供):

    public void SetCollisionBox(Vector3 center, Vector3 scale)
    {
        SetBody(new BoxShape(0.5f), center, scale);
    }
    private void SetBody(CollisionShape shape, Vector3 center, Vector3 scale)
    {
        Center = center;
        ClearBody();
        RigidBodyConstructionInfo info = new RigidBodyConstructionInfo(1, new DefaultMotionState(Matrix4.CreateTranslation(Transform.Position) + Transform.Rotation.ToMatrix4()), shape);
        Body = new RigidBody(info);

        Body.CollisionShape.LocalScaling = scale;

        GameObject.App.PhysicsWorld.AddRigidBody(Body);
    }

我像这样制作地板:

    public void MakeStatic()
    {
        if (Body != null)
            Body.SetMassProps(0, Vector3.Zero);
    }

不幸的是,没有任何物体碰撞地板。他们只是摔倒了。 我的错误在哪里?

由于

1 个答案:

答案 0 :(得分:0)

我的错误是添加了矩阵。我应该倍增他们。添加导致矩阵处于奇怪的状态,使物理引擎混乱。