Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Kollision zwischen 2 Bildern in DelphiX (https://www.delphipraxis.net/11860-kollision-zwischen-2-bildern-delphix.html)

ISAS 15. Nov 2003 12:40


Kollision zwischen 2 Bildern in DelphiX
 
Habe hier 2 Bilder :cheers: , welche immer wieder neu gezeichnet werden. (OnDXTimer)

1. Bild:

Delphi-Quellcode:
DXImageList1.Items[3].Draw(DXDraw1.Surface,256,224,0);
2. Bild:

Delphi-Quellcode:
for i:=0 to Maxx do
begin
for j:=0 to Maxy do
begin

if steine[i,j].typ=2 then begin
  DXImageList1.Items[2].Draw(DXDraw1.Surface,j*32+r,i*32+s,0);
end;

end;
end;
Bei Tastendruck verändert sich die Zahl von r oder s. :arrow:
Wie kann ich nun eine Kollision erstellen??
:?:

Das Bild 1 befindet sich immer auf dem gleichen Fleck. Nur das Bild 2 bekommt andere Kordinaten.
Das Spiel soll so funktionieren, dass sich nur der Untergrund bewegt und Büsche, etc soll er nicht umgehen können

ATwardz 15. Nov 2003 18:37

Re: Kollision zwischen 2 Bildern in DelphiX
 
Soweit ich weiss, solltest du um eine Collisionsabfrage zu erzeugen lieber mit sprites arbeiten! Da ist die Collison schon quasi eingebaut!
Ansonsten denke ich Fragst du einfach mit einem Timer ab ob
Bild1=Bild2 ist
Also
IF (Bild1.x >= Bild2.x) and (Bild1.x-Bild1.width<=Bild2.x) and für y das gleiche
so müsst es funktzen!

ATwardz

Dagon 15. Nov 2003 20:06

Re: Kollision zwischen 2 Bildern in DelphiX
 
Zitat:

Zitat von ATwardz
Soweit ich weiss, solltest du um eine Collisionsabfrage zu erzeugen lieber mit sprites arbeiten! Da ist die Collison schon quasi eingebaut!
ATwardz

Ja, nimm lieber Sprites, wenn du mit DelphiX arbeitest. Das geht viel einfacher und da kannst du einfach die Methode DoCollision überschreiben und in der Methode DoMove Collision aufrufen.

ISAS 16. Nov 2003 14:58

Re: Kollision zwischen 2 Bildern in DelphiX
 
Es geht nicht, da ich dann einige Probleme mit meinem Rollenspiel habe. :wall:

Ich müsste den ganzen Hintergrund zu Sprites machen und das kostet zu viel Rechenzeit.
Es bewegt sich nämlich nicht der Spieler sondern der Hintergrund und das ist das Entscheidente.
Das sich nur der Spieler bewegt und der Hintergrund gleich bleibt hab ich nämlich schon geschafft.
Da gibt es bei mir nämlich 32/32 grosse Kästchen, die immer neu geladen werden müssen.
Ich weiss nicht, wie gross dann die DXDrawfläche sein müsste, aber es gäbe dann sicher über 1000 Bilder auf der X-Achse und 1000 Bilder auf der Y-Achse wenn das Spiel fertig ist.

Das ist nur ein Problem. Ein anderes wäre, wenn ich nur die Sachen zu Sprites machen würde, bei der eine Kolision stattfindet, dann werden immer neue Sprites gezeichnet und die alten bleiben.

Natürlich gibt es noch viel mehr Probleme.


Das mit dem Timer könnte funktionierten, wenn ich wüsste, wie das geht.

Ich kann nicht einfach

Delphi-Quellcode:
if DXImageList1.Items[0].X=DXImageList1.Items[1].X then
...
end;
machen. Das geht nicht.

Dagon 16. Nov 2003 15:31

Re: Kollision zwischen 2 Bildern in DelphiX
 
[quote="ISAS"]Das ist nur ein Problem. Ein anderes wäre, wenn ich nur die Sachen zu Sprites machen würde, bei der eine Kolision stattfindet, dann werden immer neue Sprites gezeichnet und die alten bleiben.
[quote]

Die Sprites könntest du mit Sprite1.Dead entfernen.

Leider verstehe ich nicht ganz, wie dein Spiel aussehen soll und wie dass mit den 1000 Sprites aussieht.

ATwardz 16. Nov 2003 17:00

Re: Kollision zwischen 2 Bildern in DelphiX
 
Wieso nehmen Hintergroundsprites zu viel Rechenzeit weg?
Verwende einen Tbackgroundsprite und mit der eigenschafft tilt werden deine Kästchen bei einer Bewegung neu erzeugt und welche die nit im Bild sind gelöscht!
Bester Weh denke ich!
Wenn du mit Images arbeiten willst kannst du dir dieses löschen/erstellen der Sprites auch selber coden!
Wieso kannst du nit eine Collisonsabfrage folgendermassen machen?

Bild1 ist das, welches sich nit bewegt!
Delphi-Quellcode:
IF (BILD2.x>Bild1.x) and (Bild2<Bild1.x+Bild1.width) and
   (Bild2.y>Bild1.y) and (Bild2<Bild1.y+Bild1.height)
then
  Begin
    Bild1.destroy;//Bild 1 wird gelöscht oder was immer du machen weillst wenn
                  //der xwert und ywert von Bild2 innerhalb Bild1 liegt!
  end;
So müsste das jetzt aber eigentlich sehr gut funktzen!

ATwardz

ISAS 16. Nov 2003 18:38

Re: Kollision zwischen 2 Bildern in DelphiX
 
Liste der Anhänge anzeigen (Anzahl: 1)
Ich geb mal das Programm samt Quellcode hierher.
Ich komm einfach net weiter. :wall: :gruebel: :?:

PS: Man muss auf den Label Laden klicken und dann Anfang laden.

ISAS 17. Nov 2003 16:52

Re: Kollision zwischen 2 Bildern in DelphiX
 
Naja, 3 mal wurde es schon heruntergeladen. Hat schon jemand eine Idee??
:gruebel:


Wenn ich die Kollision habe und das Spiel ruckelfrei geht, dann ises schon fast fertig.
Gegner sind dann ein Kinderspiel (Hab ich schon gemacht). Nur das Inventar (Maus in DelphiX) wird mir noch einige Probleme bereiten.

Also, helft mir bitte, bitte, bitte so schnell, viel und gut wie möglich

ISAS 18. Nov 2003 14:19

Re: Kollision zwischen 2 Bildern in DelphiX
 
Sowieso noch eine Frage:

Wie ist das mit Bild1.X gemeint bzw wie kann ich das Bild als Bild1 definieren?? :?: :gruebel:

ATwardz 18. Nov 2003 21:02

Re: Kollision zwischen 2 Bildern in DelphiX
 
Liste der Anhänge anzeigen (Anzahl: 1)
So ich habe mich deinem Projekt mal angenommen und es mit Sprites erstellt!
Es ist nur ein Grundgerüst, sollte aber mit deinen Funktionen kompatibel sein!(Laden etc.)

Wenn du noch Fragen hast, frag einfach!


ATwardz

Programm:


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:41 Uhr.
Seite 1 von 2  1 2      

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