Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Kollisions Abfrage (https://www.delphipraxis.net/47331-kollisions-abfrage.html)

j0hn 9. Jun 2005 13:34


Kollisions Abfrage
 
Servus ich versuche schon seit einer Woche SpaceInvaders zu programmieren.
Was bis jetzt ach erfolgreich klappt bis auf die kollisions abfrage...

Ich versuche die xy koordinaten des "bullets"(kugel die das schiff abschießt) mit den koordinaten der Invader zu überprüfen.
So weit ist alles klar nur müsste ich einen bestimmten bereich eingeben wo der bullet im Invader eintrifft.
Ansonsten müsste man im spiel den einen pixel links oben treffen, was fast unmöglich ist. :wall:

thx, greetz j0hn

Khabarakh 9. Jun 2005 13:55

Re: Kollisions Abfrage
 
Mit der Funktion Delphi-Referenz durchsuchenTypes.PtInRect sollte es gehen:
Delphi-Quellcode:
Tot := PtInRect(Bounds(Enemy.Position.X, Enemy.Position.Y, Enemy.Width, Enemy.Height), Bullet.Position);
Wenn die Invaders nicht nur mit einem Punkt der Bullets kollidieren sollen (können sie überhaupt :gruebel: ?), solltest du statt PtInRect IntersectRect benutzen.

j0hn 10. Jun 2005 12:50

Re: Kollisions Abfrage
 
Jo, vielen dank.
Nur weiß ich nicht in welche variable sich die koordinaten abspeichern lassen.

[delphi]hilf:=PtInRect(Bounds(Invader1.Left,Invader1.Top,I nvader1.Width,Invader1.Height),Bullet.Left);

hilf habe ich als integer deklariert.
Nur geht leider nicht kann man die werte umwandeln oder muss ich einen typisierten datentyp verwenden??

greetz, j0hn :wiejetzt:

Airblader 10. Jun 2005 12:56

Re: Kollisions Abfrage
 
Ich würde vermuten, dass es ein TRUE oder FALSE zurückgibt, dementsprechend muss der typ von hilf ein Boolean sein

air

Edit: Achja..sicher, dass es Bullet.Left bei dir ist? Wohl eher etwas wie sowas:
Delphi-Quellcode:
Point(Bullet.Left, Bullent.Top);

j0hn 10. Jun 2005 13:08

Re: Kollisions Abfrage
 
Jetzt bin confused, ich bräuchte ein konkretes beispiel das funktioniert....

Khabarakh 10. Jun 2005 21:25

Re: Kollisions Abfrage
 
Habe ich doch :zwinker: :
Zitat:

Zitat von Khabarakh
Delphi-Quellcode:
Tot := PtInRect(Bounds(Enemy.Position.X, Enemy.Position.Y, Enemy.Width, Enemy.Height), Bullet.Position);

Angepasst an dein Codefragment:
Delphi-Quellcode:
var
  Tot: Boolean;
begin
  Tot := PtInRect(Invader1, Bullet.TopLeft);
end;
Für funktionierenden Code bräuchten wir schon etwas mehr von deinem bisherigen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:16 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz