(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;
}
}