Физика пули, не может получить столкновение со статическим основанием, чтобы работать

1

Я использую физику пули в своем движке, и это было не так сложно, чтобы интегрировать ее. Проблема, с которой я сталкиваюсь, заключается в том, что система столкновения, похоже, не распознает мою плиту пола. Я создаю физическую систему следующим образом:

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

К сожалению, никакие предметы не сталкиваются с напольной плитой. Они просто проваливаются. Где моя ошибка?

благодаря

Теги:
collision
physics
bullet

1 ответ

0

Моя ошибка заключалась в добавлении матриц. Я должен был их умножить. Добавление привело к тому, что матрицы были в странном состоянии, запутывая физический движок.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню