![]() |
Zusammen Stoß ?
Hallo,
ich Delphi 5 Standart und ich nutze DelphiX. Jetzt möchte ich in meinem neuen Spiel eine zusammen stoß prüfen: das Raumschiff(Dreieck) und den Schuß(Krei) wenn die zusammengestoßen sind möchte ich eine ShowMessage haben, wie geht das ? |
Mal ein kleines Beispiel:
du hast zwei Kreise, der eine ist das Raumschif und der andere der Komet. Das Raumschiff hat den Durchmesser von 20 und der Komet von 10. Wenn du jetzt laufend den Abstand beider Objekte überprüfst und merkst, das der Abstand kleinergleich 15 ist, dann weißt du das die beiden objekte ich berühren. So in etwa kannste das dann auch mit anderförmigen Objekten machen... |
Das ist mir soweit klar ;)
Und wie sieht das im Qullcode aus ? |
Da kann ich dir jetzt keinen fertigen Quelltext anbieten, du musst schon ein bisschen mehr von deinem Programm verraten, z.b. wie du die Positionen der Objekte speicherst, wie du die Dinger bewegst, was für ein Koordinatensystem du benutzt...
|
Das Problem ist dabei:
das raumschiff kann sich nur in x richtung bewegen und der Schuß nur in Y. |
Dann musst du gucken wann der Schuss die gleiche x Koordinate mit dem Raumschiff hat, bzw. y Koordinate. Streng dein Hirn mal an!
|
Ich habe einen gazen Tag damit verbracht, so eine Funktion zu schreiben, aber ohne erfolg.
könntes du mir mal bitte ein beispiel schreiben ? wie so was aussehen muss ? also das eine raumschiff kann sich nur in X Richtung bewegen und der Schuß kann sich nur in Y richtung bewegen. |
Moin Mimi !
hab ausversehen deinem alten Beitrag geantwortet ! Aber jetzt weiß besser was du meinst. AAaalso : Du brauchst als erstes einen kasten um die beiden objekte , dass heisst eigentlich nur die Koordinaten von 8 Punkten.
Code:
* = Punkt von dem du die Koordinatenbrauchst
*---*---* obere 3 Kordinaten 1 2 3
! ! ! ! * * mittlere 3 Koord. 4 5 ! ! ! ! *---*---* untere 3 Koord 6 7 8 So, nun hast du diese 8 koordinaten in dem Object gespeichert, aber du musst ja noch vergleichen ! da musst du einfach für jeden punkt kucken ob er zwischen den oberen , mitleren oder unteren koordinaten des gegners ist.
Delphi-Quellcode:
So in die art musst du Vorgehen , aber halt noch für jeden Punkt,
if (gegner.punkt[1].x > schiff.punkt[1].x) and
(gegner.punkt[1].x < schiff.punkt[3].x) and (gegner.punkt[1].y > schiff.punkt[1].y) and (gegner.punkt[1].y < schiff.punkt[6].y) then Tod(Sender); das kansst du ja mit ner For Schleife machen . Viel Spaß! [edit=Daniel B]Code-Tags gesetzt; MfG Daniel B.[/edit] |
Das Forum hat meine Leerzeichen gekillt !
das komische gebilde oben in meinen Beitrag soll eigentlich ein Rechteck sein ! |
Zitat:
Grüsse, Daniel :hi: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:44 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz