Hi,

I think sin/cos should be a proper approach.
Untested as always ;-)

Code:
(pseudocode)

#define MOVE_UP 1
#define MOVE_DOWN 2

set
state_move = MOVE_UP;
in the fire function

movespeed = ... // appropriate factor for speed of movement
factor = ... // appropriate factor for intensity of movement


if (statemove) {
  tilt = cos(pan)*movepercent*factor;
  roll = sin(pan)*movepercent*factor;  // or -sin(...)??
}

if (statemove == MOVE_UP) {
  movepercent += time_step*movespeed;
  if (movepercent >= 100) state_move = MOVE_DOWN;
}
if (statemove == MOVE_DOWN) {
  movepercent -= time_step*movespeed;
  if (movepercent < 0) {
    statemove = 0;
    movepercent = 0;
    tilt = 0;
    roll = 0;
  }
}