正确初始化SimpleApplication之外的物理状态

时间:2013-08-28 04:34:15

标签: java jmonkeyengine

所以我一直在学习如何使用jme3引擎和SDK。我开始在主应用程序文件之外工作,该文件扩展了SimpleApplication以进一步改进了我的应用程序。

我的问题是这个..如何正确初始化物理对象?在..你创建一个Player类,其中有一个名为phyiscs的BulletAppState对象,但是没有为AT FIRST分配值!它在构造函数中分配。

class Player {
     BulletAppState physics;

     public Player(BulletAppState physicsState) {
          this.physics = physicsState; // State should now be initialized when 
                                       // this constructor is is called
     }
}

然后,在主类文件

class Main extends SimpleApplcation {

     Player player;
     BulletAppState physics;

     public static void main(String[] args) {
          Main app = new Main();
          app.start();
     }

     @Override
     public void simpleInitApp() {
          physics = new BulletAppState();
          physics.setThreadingType(BulletAppState.ThreadingType.PARALLEL);
          stateManager.attach(physics);

          player = new Player(); 
     }
}

我没有达到预期的结果。

输出结果为:

启用主类物理状态?真

启用了玩家类物理状态?假

2 个答案:

答案 0 :(得分:0)

只需通过physics构造函数中的Player()即可初始化BulletAppState

player = new Player(physics);

答案 1 :(得分:0)

大提示:stateManager.attach()将东西添加到队列中!

在调用simpleInitApp期间初始化的唯一appStates是那些传递到new Main(appStates...)

的构造函数的appStates

我在面向对象的游戏项目中运行良好:

Main app = new Main( new StatsAppState(), new FlyCamAppState(), new DebugKeysAppState(), physics );

它很好地传递给simpleInitApp()调用中的所有对象。