2012-02-20 6 views
2

私はjMonkeyEngineで何かをテストしていますが、カメラをボックス空間に追従させようとしています。次のコードが呼び出されるjMonkeyEngineカメラに従います

@Override 
public void simpleInitApp() { 
    flyCam.setEnabled(false); 

    //world objects 
    Box b = new Box(Vector3f.ZERO, 1, 1, 1); 
    Geometry geom = new Geometry("Box", b); 

    Material mat = new Material(assetManager, "Common/MatDefs/Misc/Unshaded.j3md"); 
    mat.setColor("Color", ColorRGBA.Blue); 
    geom.setMaterial(mat); 

    rootNode.attachChild(geom); 

    //Ship node 
    shipNode = new Node(); 
    rootNode.attachChild(shipNode); 

    //Ship 
    Box shipBase = new Box(new Vector3f(0, -1f, 10f), 5, 0.2f, 5); 
    Geometry shipGeom = new Geometry("Ship Base", shipBase); 

    Material shipMat = new Material(assetManager, "Common/MatDefs/Misc/Unshaded.j3md"); 
    shipMat.setColor("Color", ColorRGBA.Green); 
    shipGeom.setMaterial(shipMat); 

    shipNode.attachChild(shipGeom); 

    //Camera node 
    cameraNode = new CameraNode("Camera Node", cam); 
    cameraNode.setControlDir(ControlDirection.CameraToSpatial); 
    shipNode.attachChild(cameraNode); 

    initPhysics(); 

    initKeys(); 


} 

@Override 
public void simpleUpdate(float tpf) { 
    //Update ship heading 
    shipHeading = shipHeading.mult(shipRotationMoment); 
    shipNode.setLocalRotation(shipHeading); 

    shipPos = shipPos.add(shipVelocity); 
    shipNode.setLocalTranslation(shipPos); 
} 

私は、次のコードを生成するが学んだことを、適用する場合

http://jmonkeyengine.org/wiki/doku.php/jme3:advanced:making_the_camera_follow_a_character

:私はここに公式の指示に従っボックスは予測どおりに動きますが、カメラはその位置にとどまります。グラフは次のようなものでなければなりません:

  • ルートノード
    • B(ボックス)shipBase
      • shipNode
      • cameraNode

したがって、カメラはすでにshipNodeにバインドされている必要があります。私は何が欠けていますか?

+0

船に取り付けられているのにカメラが移動するのはなぜですか?ボックスは動いているオブジェクトですか? –

+0

何か間違っていますがshipNodeが移動しているので、shipBase(ボックス)も一緒に移動します。しかし、shipNodeの子ノードでもあるcameraNodeは依然として静止しています。 – Vampnik

+0

申し訳ありませんが、私は船が動いていたという事実を逃しました。 –

答えて

4

あなたが提供したチュートリアルを読んでいると、タイプミスがあるようです。あなたは持っている:

cameraNode.setControlDir(ControlDirection.CameraToSpatial); 

ただし、チュートリアルはあります。それはこれらの2 ControlDirectionsの違いを定義するチュートリアルのダウン

//This mode means that camera copies the movements of the target: 
camNode.setControlDir(ControlDirection.SpatialToCamera); 

低いです。チュートリアルが提供するものは、カメラがオブジェクトの動きに追従するのに対し、オブジェクトを持つものはカメラの動きに従います。

これが役に立ちます。

関連する問題