Hallo
Zuerst möchte ich mal bemerken, dass dein Code ziemlich unübersichtlich ist!
Und nun zu deinem Probelm:
Ich nehem an, es liegt an folgenden Zeilen:
Delphi-Quellcode:
if assigned(mg) then
fire := 0
else
fire := 1;
Wenn du aber ein "Maschinengwehr" willst, musst du das anders realisieren!
1. Du solltest mal deinen Klassentyp Tmg überarbeiten (mit Constructor versehen, Methoden wie DoMove und DoCollision überschreiben etc.)!
2. Du kannst dann mit Typ auf folgende Art Schüsse erzeugen (Code sollte z. B. in der DoMove-Methode von TCar sein):
Delphi-Quellcode:
with Tmg.Create(Engine) do
begin
X := self.X; // Schuss wird genau beim TCar erzeugt
Y := self.y;
Z := 1;
end;
Du muss nurnoch z. B. in der DoMove-Methode vom Tmg abfragen, ob der Schuss über den Spielfeldrand hinaus ist und wenn ja, dann mit
Dead zerstören.