2015-09-11 25 views
2

我想擺脫過時的「CharacterControl」客場「BetterCharacterControl」爲3D遊戲,我在JMonkeyEngine3搞亂這裏是我到目前爲止的代碼發起他們:如何訪問JMonkeyEngine3中BetterCharacterControl對象的Vector3f位置?

public void initPlayer(){ 
    // We set up collision detection for the player by creating 
    // a capsule collision shape and a CharacterControl. 
    CapsuleCollisionShape capsuleShape = new CapsuleCollisionShape(1.5f, 6f, 1); 
    player = new CharacterControl(capsuleShape, 0.05f); 
    player.setJumpSpeed(20); 
    player.setFallSpeed(30); 
    player.setGravity(30); 
    player.setPhysicsLocation(new Vector3f(-10, 10, 10)); 
    bulletAppState.getPhysicsSpace().add(player); 

}

public void initBetterPlayer(){ 
    CapsuleCollisionShape betterCapsuleShape = new CapsuleCollisionShape(1.5f, 6f, 1); 
    betterPlayer = new BetterCharacterControl(2f,6f,1f); 
    // set basic physical properties: 
    betterPlayer.setJumpForce(new Vector3f(0,5f,0)); 
    betterPlayer.setGravity(new Vector3f(0, 1f ,0)); 
    betterPlayer.warp(new Vector3f(-10, 10, 10)); 
    bulletAppState.getPhysicsSpace().add(betterPlayer); 

}

在initBetterPlayer()我也具有CapsuleCollisionShape鏈接到betterPlayer麻煩。

這裏是我的simpleUpdate使用位置()方法:

player.setWalkDirection(walkDirection); 
cam.setLocation(player.getPhysicsLocation()); 

的問題是不存在像getPhysicsLocation()用於BetterCharacterControl看來,只有保護現場沒有一種方法被稱爲「位置」 。

任何輸入,非常感謝。

回答

1

如果你看看BetterCharacterControl類和它的getShape()方法,你可以看到它創建了它返回的CollisionShape(它不存儲它)。通過重寫你的類中的方法,你應該能夠提供你自己的形狀(除非你發現你可以使用它的值,它也使用CapsuleCollisionShape)。

BetterCharacterControl不是一個空間,所以有一個攝像頭跟着它是困難的。你應該讓它跟隨它所附的空間。