Gudden Tag,
ich habe mich heute wieder in meinem Andorra 2D Projekt versucht. Soweit funktionierte alles bis das Problem mit dem Interagieren kam. Das Spiel soll ein 2D Spiel aus der Vogelperspektive werden. Wenn der Held vor einem Objekt steht und man eine Taste drückt soll eine Prozedur vom Objekt ausgeführt werden, wobei es jedoch universell gehalten werden soll. Da sollte der GetSpriteAt Befehl aushelfen, jedoch gibt's da die Probleme. Die Funktion findet nämlich nichts an der entsprechenden Stelle, selbst wenn ich die Koordinaten direkt eingebe. Gibt es vielleicht andere Möglichkeiten zum Interagieren oder hat jemand Erfahrung mit dem Problem?
Hier die wichtigen Quellcodeteile:
Delphi-Quellcode:
TObjekt = class(TImageSprite)
private
protected
public
procedure UseObject; virtual; abstract;
end;
TStein = class(TObjekt)
private
protected
public
constructor Create(AParent: TSprite); override;
procedure UseObject; override;
end;
...
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure FormKeyDown(Sender: TObject; var Key: word; Shift: TShiftState);
procedure FormKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
private
{ Private-Deklarationen }
public
AdDraw: TAdDraw;
AdPerCounter: TAdPerformanceCounter;
AdImageList1: TAdImageList;
AdSpriteEngine: TSpriteEngine;
Selected: TSprite;
procedure Idle(Sender: TObject; var Done: boolean);
{ Public-Deklarationen }
end;
...
procedure TForm1.FormKeyDown(Sender: TObject; var Key: word; Shift: TShiftState);
begin
if key = 32 then
begin
Selected := AdSpriteEngine.GetSpriteAt(150,500);
if Selected <> nil then
begin
TObjekt(Selected).UseObject;
TestVar := 1;
end
else
begin
TestVar := 2;
Selected := nil;
end;
end;