Me ha costado, pero lo he encontrado (para ello he tenido que reproducir lo que creo que has hecho):
Código Delphi
[-]procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
case Key of
......
vk_space : disparo := true;
end;
end;
procedure TForm1.RDisparoTimer(Sender: TObject);
begin
if disparo then
begin
Misil.Visible := True;
Misil.Left := Misil.Left +5;
end;
end;
procedure TForm1.MisilClick(Sender: TObject);
begin
Misil.Top := Avion.Top +20;
Misil.Left := Avion.Left +100;
end;
Veamos: por un lado le estás diciendo que si pulsas la barra espaciadora, "Disparo" es cierto. Luego le dices que si "Disparo" es cierto, entonces mueva
la etiqueta misil cada X tiempo. Para terminar le dices que, si pulsas con el ratón sobre
la etiqueta entonces mueva
dicha etiqueta cerca del avión.
La cuestión es que no le dices dónde ha de ponerse el misil cuando disparas, sino cuando pulsas la etiqueta, que no es visible y, encima, se mueve. Por eso "no lo ves".
Un aviso, por si te interesa: el enfoque que le estás dando no es correcto, ya que los componentes que utilizas están preparados para hacer ventanas con botones, iconos y etiquetas, no para hacer juegos y menos para hacer juegos interactivos. Ya sé que es por cuestiones de estudios, pero si de verdad te interesa hacer juegos, echa un vistazo a
este hilo. Te prevengo que el ejemplo es muy diferente a lo que estás haciendo.