![]() |
Andorra 2D Frage: Wie antworte ich auf eine Kollision?
Hi,
bin gerade dabei Andorra zu lernen, un habe vor ein Fangen Spiel zu Programmieren. Ich bin so weit das man 2 figuren steuern kann die dann über den bildschirm flitzen, nur ich weiß nicht wie ich schauen kann ob die sich berührt(kollidiert) haben. Habe keine Ahnung wie das geht, aus den Beispielen kann ich es auch nicht entnehmen, hoffe mir kann jemand helfen MfG Spiderpig |
Re: Andorra 2D Frage: Wie antworte ich auf eine Kollision?
Wenn du die Spriteengine verwendest, dann funktioniert dies eigentlich ganz einfach. Schau dir mal in den Demos
Wenn du die Spriteengine nicht verwendest, musst du manuell überprüfen ob sich die beiden Grenzrechtecke der Grafiken überschneiden. |
Re: Andorra 2D Frage: Wie antworte ich auf eine Kollision?
ich kriege es immernoch nicht hin :(
Delphi-Quellcode:
type TMario = class(TImageSprite) private protected public constructor Create(AParent:TSprite);override; procedure GoRight ; procedure GoLeft ; procedure GoUp ; procedure GoDown ; procedure SetStartPosition; procedure DoCollision(Sprite: TSprite; var done: boolean); override; end;
Delphi-Quellcode:
und
procedure TMario.GoRight;
begin inherited; Image:=MyImageList.Find('MarioRIGHT'); X:=X + 0.4; MyMario.AnimStart:=1; MyMario.AnimStop :=2; MyMario.AnimLoop:=true; MyMario.AnimActive:=true; MyMario.AnimSpeed:=30; Collision; end;
Delphi-Quellcode:
ich weiß nciht was daran falsch ist, es tut sich einfach garnichts :(
procedure TMario.DoCollision(Sprite: TSprite; var done: boolean);
begin if Sprite is TSnake then begin showmessage('geht'); end; end; MfG Spiderpig |
Re: Andorra 2D Frage: Wie antworte ich auf eine Kollision?
Hab schon 'ne Weile nix mehr mit Andorra gemacht, aber fehlt da nicht noch 'ne "DoMove"-Routine? Bei mir ruft diese "Collision" auf.
Delphi-Quellcode:
Und soweit ich weiß, macht das die Demo auch so? :gruebel:
procedure TSpriteFigure.DoCollision(Sprite: TSprite; var Done: boolean);
begin CollisionEdges := []; FHitsEnemy := FALSE; FWallCollision := FALSE; if FDead then Exit; GetCollisionEdges; if (Sprite is TWall) then begin // ... end; end; procedure TSpriteFigure.DoMove(TimeGap: Double); begin inherited; FTimeGap := TimeGap; FTargetSprite := nil; // ... Collision; XSpeed := 0; YSpeed := 0; if FWillDie then begin // ... end; end; |
Re: Andorra 2D Frage: Wie antworte ich auf eine Kollision?
LOL MAchst ein spiel mit Mario :mrgreen:
Das ist mein Vorname :bounce2: |
Re: Andorra 2D Frage: Wie antworte ich auf eine Kollision?
ja,
du kennst nich zufällig superMario? Ist ein bischen kopiert, vor allem Die Figur :mrgreen: Achso, danke für die Tipps, habs hinbekommen, der Fehler war ein anderer... :oops: *ist mir aber peinlich welcher* :lol: MfG Spiderpig |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:42 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