Third person cameras and RigidBodyControl - space game

Hello folks
I am trying to create a space game, where you view the ship from behind (I plan to be able to switch between 1st and 3rd person). I also started dabbling in Physics/Bullet and decided to make the the objects into RigidBodies.
Having problem with making the camera follow the spatial.
When the program starts, the camera is correctly positioned at the back of the spatial.
When I start moving the Spatial via the RigidBodyControl.setLinearVelocity( ), the spatial moves, but the camera is left behind.
I looked at other examples like TestCameraNode, TestHoverTank and TestPhysicsCharacter. But several questions are bugging me:

  • Can your player spatial be a RigidBodyControl or do you have to make them something like CharacterControl? Is there a specific control devoted to players
    who are of the formof a flying/space craft ?
  • Can the HoverTank control be modified for a space game? What do I need to look at if so ?
  • I noticed a ChaseCam can be attached to Spatial via addControl( ) in the TestHoverTank program. Can this chasecam be made to behave
    like a third person camera? If so how?
    There are lots of examples dealing with characters or terrestrial crafts, but none for space or zero-G thingies.
    Any pearls of wisdom will be much appreciated.

Thanks in advance.

Here is the relevant code below:

Spatial fighter;
RigidBodyControl fighter_phy;
Node targetNode;
CamNode camNode;
fighter = assetManager.loadModel(“Models/fighter2a.j3o”);
fighter.scale(0.25f, 0.25f, 0.25f);
Material m2= new Material(assetManager, “Common/MatDefs/Misc/Unshaded.j3md”);
m2.setTexture(“ColorMap”, assetManager.loadTexture(“Textures/fighter2_pattern2.png”));
fighter.setMaterial(m2);
fighter_phy = new RigidBodyControl(1f);
fighter.addControl(fighter_phy);
bulletAppState.getPhysicsSpace().add(fighter_phy);
fighter_phy.setGravity(new Vector3f(0f, 0f, 0f)); // no gravity effects
//create a node to attach the geometry and the camera node
targetNode = new Node(“targetNode”);
rootNode.attachChild(targetNode);
targetNode.attachChild(fighter);
//creating the camera Node
camNode = new CameraNode(“CamNode”, cam);
//Setting the direction to Spatial to camera, this means the camera will copy the movements of the Node
camNode.setControlDir(ControlDirection.SpatialToCamera);
//attaching the camNode to the teaNode
targetNode.attachChild(camNode);
//setting the local translation of the cam node to move it away from the teanNode a bit
camNode.setLocalTranslation(new Vector3f(0, 0, -10));
//setting the camNode to look at the teaNode
camNode.lookAt(targetNode.getLocalTranslation(), Vector3f.UNIT_Y);
//disable the default 1st-person flyCam (don’t forget this!!)
flyCam.setEnabled(false);

you attach the cam to the targetNode, but you attach your physics controls to a child of it. When the child moves, the targetNode doesn’t so the cam doesn’t. Attach the camNode to the fighter_phy