使用以下启动:
BulletSharp.DefaultCollisionConstructionInfo collisionConstructionInfo =
new BulletSharp.DefaultCollisionConstructionInfo();
BulletSharp.DefaultCollisionConfiguration collisionConfiguration =
new BulletSharp.DefaultCollisionConfiguration(
collisionConstructionInfo );
BulletSharp.Dispatcher collisionDispatcher =
new BulletSharp.CollisionDispatcher(
collisionConfiguration );
BulletSharp.BroadphaseInterface broadPhaseCollisionInterface =
new BulletSharp.SimpleBroadphase( );
BulletSharp.CollisionWorld bulletCollisionWorld =
new BulletSharp.CollisionWorld(
collisionDispatcher,
broadPhaseCollisionInterface,
collisionConfiguration );
BulletSharp.ConstraintSolver constraintSolver =
new BulletSharp.SequentialImpulseConstraintSolver();
BulletSharp.DynamicsWorld bulletDynamicsWorld =
new BulletSharp.DiscreteDynamicsWorld(
collisionDispatcher,
broadPhaseCollisionInterface,
constraintSolver,
collisionConfiguration );
每秒运行 60 次:
bulletDynamicsWorld.StepSimulation( (float)deltaTime, 9, 1.0F / 40.0F );
然后在退出某个任意点时调用它们:
Utility.SafeDispose( bulletDynamicsWorld );
Utility.SafeDispose( constraintSolver );
Utility.SafeDispose( broadPhaseCollisionInterface );
Utility.SafeDispose( collisionDispatcher );
Utility.SafeDispose( collisionConfiguration );
Utility.SafeDispose( bulletCollisionWorld ); <<< The error happens here >>>
执行突出显示的行时出现以下错误:
“运行时遇到致命错误。错误地址位于线程 0x1378 上的 0x6b1c9704。错误代码为 0xc0000005。此错误可能是 CLR 中的错误,也可能是用户代码的不安全或不可验证部分中的错误。此错误的常见来源包括 COM-interop 或 PInvoke 的用户编组错误,这可能会损坏堆栈。”
笔记:
1)这就是所有的项目符号代码。未添加任何碰撞对象或动态对象。
2) Utility.SafeDispose() 采用 IDiposable,检查空值,如果有效则调用 .Dispose()。
3)语言是C#,说清楚。
4) Utility.SafeDispose( CollisionWorld ) 在 .SafeDispose 语句列表中的位置似乎没有效果。
为什么会崩溃,我该如何解决?
谢谢。