Einzelnen Beitrag anzeigen

Dagon

Registriert seit: 13. Jul 2003
505 Beiträge
 
Delphi 7 Professional
 
#10

Re: DelphiX Kollisionsabfrage

  Alt 14. Feb 2004, 20:00
So sieht die deklaration der Klasse aus (ist ein Beispiel, kann aber einfach erweitert werden):

Delphi-Quellcode:
  TBall = class (TImageSprite)
  private
    Winkel: Extended;
  public
    constructor Create (AParent: TSprite); override;
    procedure DoMove (MoveCount: Integer); override;
    procedure DoCollision (Sprite:TSprite; var Done: Boolean); override;
  end;
Im Konstruktor ordnest du z. B. das Image dem Sprite zu, initialisierst die Startposition und alles was es sonst noch braucht:

Delphi-Quellcode:
  inherited Create (AParent);
  Image := Form1.DXImageList1.Items.Find('Ball');
  Width := Image.Width;
  Height := Image.Height;
  Winkel := 220;
  X := 200;
  y := 400;
  Z := 0;
In der DoMove-Methode schreibst du alles rein, was mit der Bewegung des jeweiligen Sprites zutun hat (auch die Kollision mit dem Rand eines Spielfelds kommt da rein!).
Beispiel:
Delphi-Quellcode:
...
if isLeft in Form1.DXInput1.States then
  X := X - xDiff;
....
Und in die DoCollision-Methode schreibst du alles rein, was mit der Kollision zutun hat. Folgendes Bsp. macht, dass wenn der Ball mit einem Gegenstand zusammen trifft er zerstört wird:

Delphi-Quellcode:
if Sprite is TGegenstand then
  self.Dead;
Am besten du liest ein paar Tuts durch (sowohl zu den Klassen als auch zu DelphiX).

  Mit Zitat antworten Zitat