如何在JmonkeyEngine3中使用物理控件旋转空间?

时间:2016-04-01 18:48:02

标签: java physics jmonkeyengine

我从资产管理器加载了3D模型,并添加了CharacterControl作为控件。每件事都正常工作,但当我试图旋转模型时,它确实无法正常工作。

private CharacterControl player;
private Spatial model;
public static final Quaternion YAW045   = new Quaternion().fromAngleAxis(FastMath.PI/4,   new Vector3f(0,1,0));

@Override
public void simpleInitApp() {

    // add bullet app sate to state manager
    bulletAppState = new BulletAppState();
    stateManager.attach(bulletAppState);
    bulletAppState.getPhysicsSpace().enableDebug(assetManager);

this.addModel();
}

private void addModel(){
   model = assetManager.loadModel("Models/Oto/Oto.mesh.j3o");
   model.setLocalTranslation(new Vector3f(0,10,0));

    capsuleShape = new CapsuleCollisionShape(1f, 7.9f, 1);
    player = new CharacterControl(capsuleShape, 1f);
    bulletAppState.getPhysicsSpace().add(player);

   model.addControl(player);
   rootNode.attachChild(model);

   model.rotate(YAW045);
}

请帮帮我。

1 个答案:

答案 0 :(得分:2)

理查德是对的。 CharacterControl类有setViewDirection()方法。 你应该切换到BetterCharacterControl,因为它有更好的集成。我不知道为什么{@ 1}}不被弃用。

一般来说,物理对象在Bullet PhysicsSpace中有一个单独的“生命”。例如,另一个常见的物理控件:CharacterControl类有一个RigidBodyControl方法(就像它有setPhysicsRotation(Quaternion rotation)方法一样)。

更多信息在wiki中(尽管它引用了setPhysicsLocation()): Walking Character