我在我的引擎中使用了子弹物理,并没有太难将它集成。我面临的问题是碰撞系统似乎无法识别我的楼板。 我创建了这样的物理系统:
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);
}
不幸的是,没有任何物体碰撞地板。他们只是摔倒了。 我的错误在哪里?
由于
答案 0 :(得分:0)
我的错误是添加了矩阵。我应该倍增他们。添加导致矩阵处于奇怪的状态,使物理引擎混乱。