Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Sprite (Feuerball fliegen lassen) mit DelphiX! (https://www.delphipraxis.net/11881-sprite-feuerball-fliegen-lassen-mit-delphix.html)

Maximus 15. Nov 2003 21:18


Sprite (Feuerball fliegen lassen) mit DelphiX!
 
Hallo,

Ich versuche gerade einen grundstock für ein 2D Schläger oder Rollenspiel zu programmieren, als Spieler soll man mit der Leertaste ein Feuerball abschießen der dan in die richtung fliegt in die das Mänchen gedreht wurde (das funktioniert soweit) -> nur wenn man den Feuerball abschießt nach links und dan sich z.b. nach oben dreht, dan dreht sich der Feuerball auch nach oben, wie bekomm ich es hin das der Feuerball in die für ihn bestimmte richtung weiterfliegt?

Delphi-Quellcode:
procedure TFeuerball.DoMove (MoveCount: integer);
 var flieg: boolean;
 begin
   if isButton1 in Spiel.Input.States then
   begin
    Feuerball.X := Player.X;
    Feuerball.y := Player.Y;
    Feuerball.Visible := true;
    flieg := true;
    end;

    if flieg = true then
    begin
    case Player.richtung of
    1: begin Feuerball.flyrichtung := 1; Feuerball.Image := Spiel.Liste.Items.Find('FeuerballO'); flieg := false; end;
    2: begin Feuerball.flyrichtung := 2; Feuerball.Image := Spiel.Liste.Items.Find('FeuerballR'); flieg := false; end;
    3: begin Feuerball.flyrichtung := 3; Feuerball.Image := Spiel.Liste.Items.Find('FeuerballU'); flieg := false; end;
    4: begin Feuerball.flyrichtung := 4; Feuerball.Image := Spiel.Liste.Items.Find('FeuerballL'); flieg := false; end;
    end;
    end;

    case Feuerball.flyrichtung of
    1: Feuerball.Y := Feuerball.Y - 2;
    2: Feuerball.X := Feuerball.X + 2;
    3: Feuerball.Y := Feuerball.Y + 2;
    4: Feuerball.X := Feuerball.X - 2;
    end;


end;
hier mal den Code der DoMove Procedure die den Feuerball fliegen lässt!

Haegar 15. Nov 2003 22:17

Re: Sprite (Feuerball fliegen lassen) mit DelphiX!
 
Delphi-Quellcode:
case Player.richtung of
hi, das is der entscheidene Codeschnipsel, die doMove-prozedur wird ja ständig surchlaufen, wenn sich nun dein spieler dreht, so ist also player.richtung anders, und dem zu folge auch die flugrichtung, du solltest einfach beim erstellen des Feuerballs (am besten mit create-prozedur)
die flugrichtung zuweisen, dann wird diese nur einmal zugewiesen, und der spieler kann sich drehen wie er lustig ist, und der "ball" fliegt schön weiter in seine richtung!

Delphi-Quellcode:
type
  TFeuerball=class(TImageSprite)
   public
    flugrichtung:byte;  //nicht optimal wenns in public steht!
    procedure erzeugen;
    procedure DoMove(MoveCount:integer); override;
   end;


procedure TFeuerball.erzeugen;
begin
 flugrichtung:=player.richtung;
 ... //sonstige zuweisungen
end;
dann kannst du immer mit feuerball.flugrichtung arbeiten!

ciao haegar


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:18 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz