Entwickler-Ecke

Multimedia / Grafik - Kollisionsabfrage mit der Spriteengine von DelphiX will nich


Alibi - So 06.10.02 04:26
Titel: Kollisionsabfrage mit der Spriteengine von DelphiX will nich
Hi,
ich habe hier ein Problem, was mich schon Stunden nun gekostet hat.
Also: Ich bastel ein kleines Ballerspiel. Die beiden Flugzeuge können umherfliegen, das blaue mit den Pfeiltasten, das gründe mit wasd. Links und Rechts = a und d = Drehung, Oben = w = Feuer. Die Geschosse fliegen auch munter auf dem Bildschirm rum.
Soweit so gut. Nun kommt aber der part, in dem gecheckt werden soll, ob eins der Geschosse ein Flugzeug getroffen hat.
Easy denk ich mir, DoCollision überschreiben und bei DoMove collision aufrufen.
Aber nichts ist, das will einfach nicht so wie ich es will.
Bitte, helft, ich habe an dem Problem nun schon weitaus länger gesessen als an dem Rest des bisherigen Programmes.
Um euch ~180 Zeilen Source zu ersparen hab ich einfach mal den Projektordner bis auf die Exe hochgeladen:
http://www.philiplb.de/PlaneArena.zip


MathiasH - So 06.10.02 11:46

Hi
hast du dir schon das Sprite-Beispiel2 von DelphiX angeschaut, dort ist das alles verwirklicht, und funktionier auch sehr gut, soweit ich weis muss du auch PixelCheck anmachen, sonst werden die Sprites als Rectangles behandelt

MathiasH


Alibi - So 06.10.02 14:58

Hi, Pixelcheck bei den beiden Fliegern ist an, aber bei den Bullets war er es nicht. Das hab ich nun geändert:

Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
        with TBullet.Create(Form1.SpriteEngine.Engine) do begin
          Image := Form1.Images.Items[1];
          Width := Image.Width;
          Height := Image.Height;
          X := Self.X + 3;
          Y := Self.Y;
          Z := 1;
          [b]Pixelcheck := true;[/b]
          Angle := Self.Angle;
        end;

Nun ist bei allen Sprites auf dedm Feld Pixelcheck an und geht immer noch nicht.


MathiasH - So 06.10.02 17:28

und was ist mit Beispiel abkupfern? (siehe oben)

MathiasH


Alibi - So 06.10.02 18:21

Also ich hab gestern um und bei 10 Beispiele aus den verschiedensten Tutorials ausprobiert und in meinen Augen einwandfrei übertragen.

Kann es sein, dass es daran liegt, dass ich die DoDraw Methode überschreibe und da eine eigene mit DrawRotate benutze?


MathiasH - Mo 07.10.02 15:33

meep Feher gefunden, bei DrawRotate(Alpha) ist Pixelcheck nicht funktionstüchtig meep

Du muss es mit dem normalen Draw machen, oder eine eigene Kollisionserkennung schreiben

MathiasH


Alibi - Mo 07.10.02 15:44

Hm, doof.
Naja, dann wohl cya DelphiX, welcome GLScene. :)
Danke für die Hilfe.


MathiasH - Mo 07.10.02 19:26

kannst du das Drehen denn nicht als Bild machen?
Und eins sag ich dir In OpenGl iss das einiges schwieriger!!!

MathiasH


Alibi - Mo 07.10.02 21:23

Naja, GLScene macht n recht guten Eindruck.

Und ist irgendwie n bisschen aufwendig für jeden Drehzustand ein Bild zu haben.

Naja, also für Lösungen einer eigenen Kollisionsroutine wär ich natürlich offen. ;)