2016-04-01 2 views
0

J'ai chargé un modèle 3D depuis Asset Manager et ajouté CharacterControl en tant que contrôle. tout fonctionnait correctement, mais quand j'ai essayé de faire pivoter le modèle, ça n'a pas fonctionné.comment faire pivoter un espace avec contrôle de la physique dans 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); 
} 

aidez-moi s'il vous plaît.

+0

Si je me souviens bien (c'est un moment que j'ai rien fait avec des commandes) le contrôle du joueur est maintenant contrôler la rotation, la position, etc. Vous ne pouvez pas également le déplacer manuellement car le contrôle le ramènera directement. Je m'attends à ce que le contrôle de caractère ait une méthode de rotation, bien que je puisse me tromper –

Répondre

2

Richard a raison. La classe CharacterControl a une méthode setViewDirection(). Vous devriez vraiment passer à BetterCharacterControl mais il a une meilleure intégration. Je ne sais pas pourquoi CharacterControl n'est pas obsolète.

En général, les objets de physique ont une «vie» distincte car ils vivent dans l'Espace Physique Bullet. Par exemple, l'autre contrôle physique commun: RigidBodyControl classe a une méthode setPhysicsRotation(Quaternion rotation) (tout comme il a une méthode setPhysicsLocation()).

Plus d'info est dans le wiki (bien qu'il fait référence CharacterControl): Walking Character