2016-04-01 6 views
0

アセットマネージャから3Dモデルを読み込み、CharacterControlをコントロールとして追加しました。すべてが正常に動作していましたが、モデルを回転しようとすると動作しませんでした。JmonkeyEngine3で物理コントロールを使用して空間を回転する方法は?

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); 
} 

私を助けてください。

+0

私が正しくリコールプレーヤーのコントロールは、現在の回転を制御し、位置などをされて(それは私がコントロールを使って何をやったので、しばらくのです)コントロールがそれをまっすぐに戻すので、手動で移動することもできません。私はキャラクターコントロールが回転メソッドを持つことを期待しますが、私は間違っている可能性があります –

答えて

2

リチャードが正しいです。 CharacterControlクラスはsetViewDirection()メソッドを持っています。 統合性が向上しているので、実際はBetterCharacterControlに切り替える必要があります。 CharacterControlが推奨されない理由は分かりません。

一般的に、物理オブジェクトは、Bullet PhysicsSpaceに存在するように別個の「生命」を持っています。例えば、RigidBodyControlクラスにはsetPhysicsRotation(Quaternion rotation)メソッドがあります(setPhysicsLocation()メソッドと同じように)。 (それはCharacterControlを参照していますが)

詳細情報はウィキにあります Walking Character

関連する問題