Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi [Andorra 2d] Animation (https://www.delphipraxis.net/111661-%5Bandorra-2d%5D-animation.html)

Noone9 7. Apr 2008 15:03


[Andorra 2d] Animation
 
Hallo,

ich schreibe derzeit ein kleines Spiel für Andorra bei welchem man eine kleine Figur über den Bildschirm in alle 4 Richtungen bewegen kann. Meine Kleine Figur besteht bis jetzt aus 7 Pattern, 0 für stilles Stehen, Pattern 1 und 2 für nach rechts, Pattern 3 und 4 für nach links und Pattern 5 und 6 für nach unten Laufen. Die Animationen werden nun so aktiviert:
Delphi-Quellcode:
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
if (Key=VK_RIGHT) then
  begin
    XMove:=150;
    Figur.AnimStart:=1;
    Figur.AnimStop:=2;
    mundungx:=Figur.X+19;
    mundungy:=Figur.Y+20;
  end;
if (Key=VK_LEFT) then
  begin
    XMove:=-150;
    Figur.AnimStart:=3;
    Figur.AnimStop:=4;
    mundungx:=Figur.X;
    mundungy:=Figur.Y+20;
  end;
if (Key=VK_UP) then Ymove:=-150;
if (KEY=VK_DOWN) then
begin
Ymove:=150;
Figur.Animstart:=5;
Figur.Animstop:=6;
mundungx:=Figur.X+2;
mundungy:=Figur.Y+29;
end;
bzw. über KeyUp gestoppt:
Delphi-Quellcode:
procedure TForm1.FormKeyUp(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
if (Key=VK_Right) or (Key=VK_Left)then
begin
Xmove:=0;
Figur.Animstart:=0;
Figur.AnimStop:=0;
end;
if (Key=VK_UP) or (KEY=VK_DOWN) then
begin
Ymove:=0;
Figur.Animstart:=0;
Figur.AnimStop:=0;
end
end;
Wenn man nach rechts läuft, funktioniert die Animation wie gedacht. Wenn man nun aber nach links läuft, läuft komischerweise kurzzeitige die Animation für nach rechts laufen ab und wenn man nach unten läuft erst die Animation für nach Rechts dann für nach Links und dann erst für nach unten laufen ab. Andorra scheint also erst die Pattern von 0 bis xx abzuspielen bevor es die richtige AnimStart Pattern abspielt. Ich hoffe ihr versteht mein Problem und hab eine mögliche Lösung.

STS301 7. Apr 2008 15:07

Re: [Andorra 2d] Animation
 
schau dir einemal die "Wormhunter" Demo an, die wird bestimmt helfen.

kann es sein das du das vergessen hast??
Delphi-Quellcode:
if (Key=VK_LEFT) then
  begin
    XMove:=-150;
    Figur.AnimStart:=3;
    Figur.AnimStop:=4;
    mundungx:=Figur.X; //+19 ???
    mundungy:=Figur.Y+20;

DeddyH 7. Apr 2008 15:12

Re: [Andorra 2d] Animation
 
Hat nicht direkt mit dem Problem zu tun, aber ich würde eine case-Abfrage verwenden.

Noone9 7. Apr 2008 15:14

Re: [Andorra 2d] Animation
 
Danke, werd ich gleich mal machen, werde berichten sobald ich den Fehler hab, leider ist Wormhunter etwas anders aufgebaut, werd trotzdem mal schauen. Nee das mundungx und mundungy bezieht sich auf die Stelle an der die "Projektile" meine Figur verlassen und da die je nach Bewegungsrichtung anders ist passt das schon. :)

Edit: Jo Case ist wohl besser, bin noch im frühen Stadium des Codes, werds verändern. Danke


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:15 Uhr.

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