私は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
- B(ボックス)shipBase
したがって、カメラはすでにshipNodeにバインドされている必要があります。私は何が欠けていますか?
船に取り付けられているのにカメラが移動するのはなぜですか?ボックスは動いているオブジェクトですか? –
何か間違っていますがshipNodeが移動しているので、shipBase(ボックス)も一緒に移動します。しかし、shipNodeの子ノードでもあるcameraNodeは依然として静止しています。 – Vampnik
申し訳ありませんが、私は船が動いていたという事実を逃しました。 –