1

次のように実装された別のスレッドで物理が更新されるゲームのセットアップがあります

物理プロセッサ (物理スレッド)

public class PhysicsProcessor extends Runnable {
    private DynamicsWorld world;

    public PhysicsProcessor() {
        /* basic dynamics world setup with dvbt broadphase :P */
    }

    public synchronized getDynamicsWorld() { return world; }

    @Override
    public void run() {
        /* update time */

        //update phyics
        getDynamicsWorld().stepSimulation(/* delta time */);
    }
}

メインスレッドでのオブジェクト作成の例

myPhysicsProcessor.getDynamicsWorld.addRigidBody(/* some rigid body created here */);

問題は、ゲームを実行すると、「stepSimulation」の別のスレッドで null ポインター例外が発生することがあるということです。これは、dbvt ブロードフェーズの setAabb が原因でした。

この例外を防ぐために私ができること、またはそれを回避する方法について何か提案はありますか?

4

1 に答える 1