Einzelnen Beitrag anzeigen

Acuaplano

Registriert seit: 8. Mai 2013
29 Beiträge
 
#1

GetSpriteAt-Problem bei Andorra 2D

  Alt 8. Mai 2013, 12:03
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;
  Mit Zitat antworten Zitat