Autor Beitrag
mmmichael
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Do 06.10.05 15:49 
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
ontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic starofftopic starofftopic star
Beiträge: 1280

Linux (FC6), WinXP Pro (Box)
D6 Pers, D7 Pro, FPC 2.x
BeitragVerfasst: 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.

_________________
"Menschen sterben nicht wenn man sie zu Grabe trägt, sondern wenn sie ihre Träume verlieren..."
mmmichael
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Do 06.10.05 17:57 
das will aber nicht so wirklich. gehts nicht anders?
Phobeus
ontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic starofftopic starofftopic star
Beiträge: 1280

Linux (FC6), WinXP Pro (Box)
D6 Pers, D7 Pro, FPC 2.x
BeitragVerfasst: 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...

_________________
"Menschen sterben nicht wenn man sie zu Grabe trägt, sondern wenn sie ihre Träume verlieren..."
mmmichael
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: 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:

ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: 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 ...

_________________
Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
digi_c
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1905

W98, XP
D7 PE, Lazarus, WinAVR
BeitragVerfasst: Fr 07.10.05 08:44 
In der aktuellen Onlineausgabe von Der Spieleprogrammierer ist auch sehr gut die ganze Theorie erläutert, ist aber an C gehalten aber sehr interessant da für verschiedenste Formen.
mmmichael
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Fr 07.10.05 15:11 
Okay danke! Jetzt hauts hin! :D