Entwickler-Ecke
Multimedia / Grafik - Kollisionsabfrage bei Shapes
Delete - Do 06.10.05 15:49
Titel: Kollisionsabfrage bei Shapes
Hallihallo!
Ich bastel grad an einem kleinen Spiel und würde da gerne eine Kollisionsabfrage zwischen zwei sich bewegenden shapes einbauen.
*Wie ist dies am leichtesten zu realisieren?*
(ohne DelphiX oder sonstwas spezielles. Only Delphi) :)
mmmichael
Phobeus - Do 06.10.05 17:33
Eine genauere Definition des Begriffes Shape... eine Suchanfrage ans Forum, da zahlreiche Fragen in dieser Form sicherlich bereits beantwortet wurden. Sofern ein Shape bei Dir als Recteckt definiert wird, reicht wohl eine einfache IF-Abfrage. Befindet sich X1/Y1 bis X2/Y1, sowie X1/Y2 bis X2/Y2 in den Bereich des zweiten Bereichs, gab es eine Kollision.
Delete - Do 06.10.05 17:57
das will aber nicht so wirklich. gehts nicht anders?
Phobeus - Do 06.10.05 18:07
Man kann es auch in Stossgebeten gen Himmel probieren oder eine mathematische Weltkonferenz einberufen in der man gängige Logik in Frage stellt in der Hoffnung, dass künftige Programmiersprachen es anders umhersetzen... wer in Herr Gottes nahmen sagt den, dass Programmieren etwas mit einem Willen zu tun hat? Du suchst einen einfachen Weg, dies IST der einfachste weg. Geschrieben als Funktion, sogar sehr einfach zu benutzen. Selbst in komplexeren Situationen wie z.B. der 3D-Entwicklung sind sogenannt "Bounding Box" oder "Bounding Spheres" Grundmuster, die verwendet werden und dies meist gar nicht komplexer als eben der Weg, den Du suchst...
Delete - Do 06.10.05 18:21
Dann sag mir doch bitte warum die erste abfrage mit Spieler1 geht und die zweite nicht, obwohl sie haargenau das gleiche neinhaltet:
Delphi-Quelltext
1: 2: 3: 4:
| with Pongform do begin if ( ( Ball.Left in [Spieler1.Left .. (Spieler1.Left + Spieler1.width)]) AND (Ball.top in [Spieler1.top .. (Spieler1.top + Spieler1.height)]) )then movx := - movx; if ( ( (Ball.Left + Ball.width) in [Spieler2.Left .. (Spieler2.Left + Spieler2.Width)]) AND (Ball.top in [Spieler2.top .. (Spieler2.top + Spieler2.height)]) )then movx := - movx; end; |
BenBE - Do 06.10.05 21:30
^^ Der klassische Set-Fehler ^^ :P
Delphi unterstützt nur Sets mit maximal 256 Elementen. Delphi
Du musst wohl oder Übel Ranges mit (X >= Min) and (X <= Max) prüfen. Dann sollte das eigentlich funktionieren ...
Delete - Fr 07.10.05 15:11
Okay danke! Jetzt hauts hin! :D
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!