// Update is called once per frame void Update() { var right_throttle_position = right_throttle.value(); var left_throttle_position = left_throttle.value(); port_rig.localPosition = port_zero + right_throttle_position; starboard_rig.localPosition = starboard_zero + left_throttle_position; var w = starboard_zero.x - port_zero.x; var yaw = Mathf.Atan((right_throttle_position.z - left_throttle_position.z) / w); var roll = Mathf.Atan((right_throttle_position.y - left_throttle_position.y) / w); var rot = Quaternion.AngleAxis(yaw, Vector3.up) * Quaternion.AngleAxis(roll, Vector3.forward); var combined_xlate_throttle = right_throttle_position + left_throttle_position; v += (thrust / mass) * combined_xlate_throttle * Time.deltaTime; //transform.position += v * Time.deltaTime; //transform.rotation = Quaternion.RotateTowards(transform.rotation, rot*transform.rotation, .2f); }