Hi,
Thanks, it was easier than I thought…transform gives world space anyway, even on child objects so no translation required.
Got in a pickle for an hour, because I forgot to Mathf.Abs the horizontal access value and so it only ever turned one way 
public class LanderScript : MonoBehaviour {
public GameObject leftThruster;
public GameObject rightThruster;
public GameObject mainThruster;
public float thrustForce = 2f;
public float sideThrustForce = 2f;
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
Camera mainCamera = Camera.main;
float leftRightThrust = Input.GetAxis(“Horizontal”);
float mainThrust;
if(Input.GetKey(“joystick button 16”)) {
mainThrust = 1.0f;
} else {
mainThrust = 0f;
}
//Vector3 leftThrustPos = transform.TransformPoint(leftThruster.transform.position);
Vector2 leftThrustPos = new Vector2(leftThruster.transform.position.x, leftThruster.transform.position.y);
Vector2 rightThrustPos = new Vector2(rightThruster.transform.position.x, rightThruster.transform.position.y);
Vector2 mainThrustPos = new Vector2(mainThruster.transform.position.x, mainThruster.transform.position.y);
Debug.Log("leftThrustPos " + leftThrustPos.x + " " + leftThrustPos.y);
Debug.Log("rightThrustPos " + rightThrustPos.x + " " + rightThrustPos.y);
Debug.Log("mainThrustPos " + mainThrustPos.x + " " + mainThrustPos.y);
if(leftRightThrust < -0.2) {
Debug.Log(“applying thrust to turn left”);
rigidbody2D.AddForceAtPosition(transform.up * Mathf.Abs(leftRightThrust) * sideThrustForce, rightThrustPos);
} else if(leftRightThrust > 0.2) {
Debug.Log(“applying thrust to turn right”);
rigidbody2D.AddForceAtPosition(transform.up * Mathf.Abs(leftRightThrust) * sideThrustForce, leftThrustPos);
}
if(mainThrust > 0) {
rigidbody2D.AddForceAtPosition(transform.up * thrustForce, mainThrustPos);
}
//leftThruster.AddForce(Vector2.up * thrust);
}
}