![]() |
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: |
Danke! Aber soweit bin ich auch schon gekommen;)
Also ich habe volgendes problem: ich habe ein Kreis und ein Dreiec, nun will ich nach schauen ob sie zusammen gestoßen sind, aber wie mache ich das ? habe es ebend noch mal versucht es geht einfach nicht ! |
Verstehst du was von Vektorrechnung? Wenn ja, dann kannste das Problem über Abstand Grade-Punkt lösen, wenn nicht, dann musste dir was anderes suchen.
|
Wilsst du also ne Pixelgenaue Abfrage oder wie meinst du das ?
|
Ich habe zwei Objekte eins ist ein Dreiec und das andre ist ein Kreis, nun möchte ich wissen ob sie zusammen gestoßen sind, aber wie bekommen ich das raus ?
Jemmand eine idee ? Wenn möglich, dann möchte ich eine genaue Colisions abfrage, was jetzt "Pixelgenaue Abfrage" genau heißt, weiß ich leider noch nicht ! Vektorrechnung: neine ich verstehe davon leider überhaupt nichts, aber könntes du mir das mal genau erklären janjan ? dann könnte ich dies vielicht einsetzen ;) |
Jo, ne pixelgenaue Abfrage , damit mein ich das praktisch jeder pixel ausenrum um dein dreieck abgefragt wird und jeder von deinem Kreis und diese Koordinaten dann der jeweiligen position der Objekte angepasst werden und dann schlussendlich verglichen werden !
hab ich schon programmiert , ist aber verdammt kompliziert , ich könnte dir das programm und den Code geben aber ist halt verdammt schwierig bei dem Code den Durchblick zu behalten! Wennn du willst poste mach ich demnächst noch nen Eintrag wo die Datei dabei ist !( dauert aber noch denn momentan bin ich mit nem Mac im Internet und da kann ich die Windows dateien nich draufkriegen !) |
Ja! das währe echt toll, wenn du mir das senden, bzw. posten könntes !
Weil ich bekommen das einfach nicht hin :( :( PS Kann man von eine mac wirklich keine Windows dateien lesen ? |
Normalerweise geht's glaub ich schon , aber der Mac hat kein Disketten-Laufwerk ! (Muss erst noch das Netzwerk in Gang Kriegen und Dann Post ich nen neuen Beitrag)
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:45 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-2025 by Thomas Breitkreuz